The Events module provides comprehensive event planning, scheduling, and management capabilities for your school. From academic calendars and sports days to parent-teacher meetings and cultural celebrations, this module handles the full event lifecycle with registration tracking, notifications, and multi-view calendars.
Navigation path
Events (segment: events)
| Sub-section | Path | Description |
|---|
| Calendar | events | Calendar view of all events |
| Event detail | events/[eventId] | Individual event page |
Events architecture
┌─────────────────────────────────────────────────────────────────────────┐
│ Events Management System │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Event Creation │ │
│ │ │ │
│ │ Multi-step wizard: Basics → Schedule → Location → Registration │ │
│ │ 17 event types • 6 visibility levels • Recurring support │ │
│ │ │ │
│ └────────────────────────────────┬─────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────── ────────────────────────────────────────────────┐ │
│ │ Event Lifecycle │ │
│ │ │ │
│ │ Draft → Scheduled → Published → In Progress → Completed │ │
│ │ ↓ ↓ │ │
│ │ Postponed Cancelled │ │
│ │ │ │
│ └────────────────────────────────┬─────────────────────────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Calendar Views │ │ Registrations │ │ Notifications │ │
│ │ │ │ │ │ │ │
│ │ Month, Week, │ │ Attendees, │ │ Email, SMS, Push, │ │
│ │ Day, Agenda │ │ Volunteers, │ │ In-app reminders │ │
│ │ │ │ Speakers │ │ │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Statistics & Insights │ │
│ │ │ │
│ │ Total events • Upcoming • In progress • Completed • Cancelled │ │
│ │ By type breakdown • Registration totals • Average attendance │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Part 1: Event types
Events are categorized by type for better organization and filtering.
Type definitions
| Type | Description | Icon | Suggested duration | Default all-day |
|---|
academic | Lectures, seminars, study sessions | GraduationCap | 60 min | – |
sports | Athletic events, matches, activities | Trophy | 120 min | – |
cultural | Performances, artistic celebrations | Music | 180 min | – |
social | Gatherings, parties, community events | Users | 120 min | – |
meeting | Staff, parent meetings, consultations | MessageSquare | 60 min | – |
workshop | Hands-on training sessions | Wrench | 180 min | – |
seminar | Guest lectures, educational presentations | Presentation | 90 min | – |
ceremony | Graduation, awards, formal events | Award | 120 min | – |
holiday | School holidays and breaks | Palmtree | — | ✓ |
exam | Examinations and assessments | FileCheck | 180 min | – |
field_trip | Educational trips and excursions | Map | — | ✓ |
competition | Academic and sports competitions | Target | 240 min | – |
parent_event | Family events and engagements | Heart | 120 min | – |
parent_teacher | Parent-teacher meetings | Heart | 120 min | – |
fundraiser | Charity and fundraising activities | HandHeart | 180 min | – |
assembly | School assemblies, announcements | Megaphone | 45 min | – |
other | Events not fitting standard categories | HelpCircle | 60 min | – |
Type color coding
| Type | Color |
|---|
| Academic | Blue |
| Sports | Orange |
| Cultural | Purple |
| Social | Pink |
| Meeting | Slate |
| Workshop | Amber |
| Seminar | Indigo |
| Ceremony | Yellow |
| Holiday | Green |
| Exam | Red |
| Field Trip | Teal |
| Competition | Rose |
| Parent Event | Cyan |
| Fundraiser | Emerald |
| Assembly | Violet |
| Other | Gray |
Part 2: Event statuses
Events progress through a lifecycle from creation to completion.
Status definitions
| Status | Description | Terminal | Can edit | Can cancel | Can publish |
|---|
draft | In draft mode, not visible | – | ✓ | ✓ | ✓ |
scheduled | Scheduled but not published | – | ✓ | ✓ | ✓ |
published | Live and visible to attendees | – | ✓ | ✓ | – |
in_progress | Currently happening | – | – | ✓ | – |
completed | Event has finished | ✓ | – | – | – |
cancelled | Event cancelled | ✓ | – | – | – |
postponed | Rescheduled to later date | – | ✓ | ✓ | ✓ |
Status workflow
┌─────────────────┐
│ Draft │ ← Initial state
└────────┬────────┘
│
┌────┴────────────────┐
│ │
Schedule Publish
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Scheduled │───▶│ Published │
└────────┬────────┘ └────────┬────────┘
│ │
┌────┴────┐ ┌─────┴─────────────┐
│ │ │ │
Publish Cancel In Progress Cancel
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Published │ │ In Progress │ │ Cancelled │
└─────────────────┘ └────────┬────────┘ │ (Terminal) │
│ └─────────────────┘
┌────┴────┐
│ │
Complete Cancel
│ │
▼ ▼
┌─────────────────┐
│ Completed │
│ (Terminal) │
└─────────────────┘
┌─────────────────┐
│ Postponed │ ← Can return to draft/scheduled
└─────────────────┘
Part 3: Visibility levels
Control who can see events.
Visibility definitions
| Visibility | Description | Icon |
|---|
public | Visible to everyone including external visitors | Globe |
internal | Visible to all school members | Users |
staff_only | Only visible to staff members | UserCheck |
students_only | Only visible to students | GraduationCap |
parents_only | Only visible to parents/guardians | UserCircle |
restricted | Limited visibility based on specific criteria | Lock |
Visibility use cases
| Visibility | Example events |
|---|
| Public | Open days, graduation ceremonies, sports finals |
| Internal | Regular assemblies, inter-house competitions |
| Staff only | Staff meetings, professional development |
| Students only | Student council meetings, study groups |
| Parents only | Parent-teacher conferences, PTA meetings |
| Restricted | Discipline hearings, sensitive meetings |
Part 4: Recurrence patterns
Events can repeat on a schedule.
Pattern definitions
| Pattern | Description | Suggested occurrences |
|---|
none | Does not repeat (one-time event) | — |
daily | Repeats every day | 7 |
weekly | Repeats every week | 12 |
monthly | Repeats every month | 12 |
yearly | Repeats every year | 3 |
Recurrence properties
| Field | Type | Description |
|---|
is_recurring | boolean | Whether event repeats |
recurrence_pattern | enum | Daily, weekly, monthly, yearly |
recurrence_end_date | date | When recurrence stops |
recurrence_count | number | Max number of occurrences |
parent_event_id | string | Links to original event |
Part 5: Registration types
Configure attendee registration requirements.
Registration definitions
| Type | Description | Requires deadline | Requires capacity |
|---|
none | No registration - open to all | – | – |
optional | Registration recommended but not required | – | – |
required | Registration mandatory to attend | ✓ | ✓ |
ticketed | Tickets or passes required for entry | ✓ | ✓ |
Registration properties
| Field | Type | Description |
|---|
registration_type | enum | None, optional, required, ticketed |
registration_deadline | datetime | Cutoff for registrations |
max_attendees | number | Capacity limit |
current_attendees | number | Current registration count |
waitlist_enabled | boolean | Allow waitlist when full |
registration_url | string | External registration link |
Registration statuses
| Status | Description |
|---|
pending | Awaiting confirmation |
confirmed | Registration confirmed |
waitlisted | On waitlist |
cancelled | Registration cancelled |
Registration types (attendee)
| Type | Description |
|---|
attendee | Regular attendee |
volunteer | Event volunteer |
speaker | Presenter or speaker |
performer | Performance participant |
Part 6: Event properties
Complete event data structure.
Core properties
| Field | Type | Description |
|---|
id | string | Unique identifier |
tenant_id | string | Tenant association |
school_id | string | School association |
title | string | Event title (max 200 chars) |
description | string | Full description (max 5000 chars) |
event_type | enum | Event category |
status | enum | Current status |
visibility | enum | Who can see |
Scheduling properties
| Field | Type | Description |
|---|
start_date | date | Start date |
end_date | date | End date |
start_time | time | Start time (if not all-day) |
end_time | time | End time (if not all-day) |
timezone | string | Event timezone |
all_day | boolean | Full day event |
Location properties
| Field | Type | Description |
|---|
location_name | string | Simple location name |
location.name | string | Structured location name |
location.address | string | Street address |
location.room | string | Room number |
location.building | string | Building name |
location.capacity | number | Venue capacity |
location.isVirtual | boolean | Online event |
location.virtualLink | string | Meeting URL |
location.mapLink | string | Map link |
location.coordinates | object | Lat/long |
Organization properties
| Field | Type | Description |
|---|
organizer_id | string | Organizer user ID |
organizer.type | enum | Staff, department, organization |
organizer.name | string | Organizer name |
organizer.email | string | Contact email |
department_id | string | Organizing department |
class_id | string | Associated class |
grade_level_ids | array | Target grade levels |
target_audience | array | Audience segments |
Cost properties
| Field | Type | Description |
|---|
is_free | boolean | No cost to attend |
cost | number | Ticket/registration price |
currency | string | Currency code |
Content properties
| Field | Type | Description |
|---|
image_url | string | Event image |
banner_url | string | Banner image |
attachments | array | Supporting documents |
tags | array | Searchable tags |
categories | array | Category groupings |
Notification properties
| Field | Type | Description |
|---|
send_notifications | boolean | Send reminders |
reminders | array | Reminder configuration |
reminders[].type | enum | Email, SMS, push, in_app |
reminders[].offset | number | Minutes before event |
| Field | Type | Description |
|---|
is_featured | boolean | Highlighted event |
is_active | boolean | Active status |
created_at | datetime | Creation timestamp |
updated_at | datetime | Last update |
published_at | datetime | When published |
cancelled_at | datetime | When cancelled |
cancellation_reason | string | Why cancelled |
postponed_to | datetime | New date if postponed |
postponement_reason | string | Why postponed |
Part 7: Creating events
Multi-step wizard for event creation.
| Step | Title | Fields |
|---|
| 1. Basics | Basic Info | Title, type, description |
| 2. Schedule | Schedule | Date, time, recurrence |
| 3. Location | Location | Venue, virtual link |
| 4. Registration | Registration | Type, capacity, deadline |
| 5. Advanced | Advanced | Notifications, tags, visibility |
- Enter event title (required)
- Select event type (required)
- Add description
- Choose visibility level
- Mark as featured (optional)
Step 2: Schedule
- Select start date (required)
- Select end date (required)
- Set all-day toggle
- If not all-day:
- Set start time
- Set end time
- Configure recurrence:
- Pattern (none, daily, weekly, monthly, yearly)
- End date or count
Step 3: Location
- Enter location name
- For physical locations:
- Building
- Room
- Address
- Map link
- For virtual events:
- Toggle "Virtual event"
- Enter meeting link
Step 4: Registration
- Select registration type:
- None (open to all)
- Optional
- Required
- Ticketed
- If required/ticketed:
- Set capacity limit
- Set registration deadline
- Enable/disable waitlist
- For ticketed:
Step 5: Advanced settings
- Configure reminders:
- 15 minutes before
- 30 minutes before
- 1 hour before
- 2 hours before
- 1 day before
- 2 days before
- 1 week before
- Add tags
- Add categories
- Upload banner image
- Attach documents
Smart suggestions
The system provides intelligent suggestions:
- Title suggestions based on event type
- Duration suggestions based on type
- Time suggestions based on typical school hours
Part 8: Calendar views
Multiple ways to view events.
View types
| View | Description | Best for |
|---|
| Month | Full month grid | Overview, planning |
| Week | 7-day detailed view | Weekly scheduling |
| Day | Single day timeline | Daily agenda |
| Agenda | List view | Quick scanning |
Calendar navigation
- Previous/Next — Navigate periods
- Today — Jump to current date
- View toggle — Switch between views
- Date picker — Jump to specific date
Event display
Events on calendar show:
- Title (truncated if long)
- Color by event type
- Time (if not all-day)
- Recurring indicator
- Featured indicator
Event hover card
Hovering reveals:
- Full title
- Date and time
- Location
- Status badge
- Type badge
- Quick action buttons
Part 9: Quick filters
Pre-built filters for common views.
Filter options
| Filter | Description | Icon |
|---|
| Today | Events happening today | Calendar |
| This Week | Events this week | CalendarCheck |
| Upcoming | Future events | CalendarClock |
| My Events | Events you're organizing | UserCircle |
| Featured | Highlighted events | Award |
Filter parameters
| Parameter | Type | Description |
|---|
event_type | enum | Filter by type |
status | enum | Filter by status |
visibility | enum | Filter by visibility |
start_date_from | date | Start date range |
start_date_to | date | End date range |
organizer_id | string | By organizer |
department_id | string | By department |
class_id | string | By class |
is_featured | boolean | Featured only |
is_recurring | boolean | Recurring only |
tags | array | By tags |
categories | array | By categories |
Part 10: Event detail view
Comprehensive event information display.
Detail sections
| Section | Content |
|---|
| Header | Title, type badge, status badge |
| Status banner | Live indicator, countdown, past warning |
| Schedule | Date, time, duration, recurrence info |
| Location | Venue details, map link, virtual link |
| Description | Full event description |
| Registration | Type, capacity, deadline, register button |
| Attendees | Registration list, counts |
| Organizer | Contact information |
| Attachments | Supporting documents |
| Timeline | Event history |
Quick actions
| Action | When available |
|---|
| Edit | Draft, scheduled, published, postponed |
| Publish | Draft, scheduled, postponed |
| Unpublish | Published |
| Cancel | Draft, scheduled, published, in_progress |
| Postpone | Scheduled, published |
| Duplicate | Any status |
| Delete | Draft only (or with permission) |
| Share | Published |
Event countdown
Displays contextual timing information:
- "Starts in 2 hours"
- "Happening now"
- "Event has passed"
- "Registration closes in 3 days"
Part 11: Managing registrations
Track and manage event attendees.
Registration workflow
- User views published event
- Clicks "Register" button
- Selects registration type (attendee, volunteer, speaker, performer)
- Adds notes (optional)
- Submits registration
- Status: Pending or Confirmed (based on settings)
Capacity management
- Track current vs max attendees
- Show available spots
- Enable waitlist when full
- Auto-confirm from waitlist on cancellation
Registration list
View and manage registrations:
- Filter by status
- Filter by type
- Export list
- Send bulk messages
- Cancel registrations
Part 12: Event actions
Operations available on events.
Publish event
POST /api/v1/operations/events/:id/publish
Changes status from draft/scheduled to published.
Unpublish event
POST /api/v1/operations/events/:id/unpublish
Returns event to draft status.
Cancel event
POST /api/v1/operations/events/:id/cancel
{
"reason": "Due to weather conditions"
}
- Changes status to cancelled
- Records cancellation reason
- Notifies registered attendees
Postpone event
POST /api/v1/operations/events/:id/postpone
{
"new_start_date": "2024-03-15",
"new_end_date": "2024-03-15",
"new_start_time": "14:00",
"new_end_time": "16:00",
"reason": "Venue unavailable"
}
- Changes status to postponed
- Records new dates
- Records postponement reason
- Notifies registered attendees
Part 13: Reminders and notifications
Keep attendees informed.
Reminder options
| Timing | Value (minutes) |
|---|
| 15 minutes before | 15 |
| 30 minutes before | 30 |
| 1 hour before | 60 |
| 2 hours before | 120 |
| 1 day before | 1440 |
| 2 days before | 2880 |
| 1 week before | 10080 |
Notification channels
| Channel | Description |
|---|
email | Email notification |
sms | SMS text message |
push | Mobile push notification |
in_app | In-app notification |
Automatic notifications
| Trigger | Recipients |
|---|
| Event published | Target audience |
| Event cancelled | Registered attendees |
| Event postponed | Registered attendees |
| Registration confirmed | Registrant |
| Reminder due | Registered attendees |
| Event starting | Registered attendees |
Part 14: Statistics
Event analytics and insights.
Summary metrics
| Metric | Description |
|---|
total | Total events in period |
upcoming | Events not yet started |
inProgress | Currently happening |
completed | Finished events |
cancelled | Cancelled events |
totalRegistrations | Total registrations |
averageAttendance | Average per event |
Breakdowns
| Dimension | Description |
|---|
byType | Count per event type |
byStatus | Count per status |
Part 15: Default values
System defaults for new events.
| Setting | Default value |
|---|
| Event type | Meeting |
| Visibility | Internal |
| Registration type | None |
| Recurrence | None |
| All day | False |
| Is free | True |
| Is featured | False |
| Send notifications | True |
| Waitlist enabled | False |
| Default start time | 09:00 |
| Default end time | 10:00 |
| Default duration | 60 minutes |
| Max title length | 200 characters |
| Max description length | 5000 characters |
Permissions required
| Action | Required permission |
|---|
| View calendar | events.view |
| View event detail | events.view |
| Create event | events.create |
| Edit event | events.update |
| Delete event | events.delete |
| Publish event | events.publish or events.update |
| Cancel event | events.cancel or events.update |
| Manage registrations | events.registrations.manage |
| View statistics | events.statistics.view or events.view |
Best practices
Event planning
Scheduling
Registration
Communication
After events
Troubleshooting
Event not appearing on calendar
Causes:
- Status is draft (not published)
- Visibility restricts your access
- Date range filter excludes event
- School/tenant mismatch
Fix:
- Check event status
- Verify your role has visibility access
- Adjust calendar date range
- Confirm correct school context
Cannot edit event
Causes:
- Event is completed or cancelled
- Event is in progress
- Insufficient permissions
Fix:
- Check event status (terminal states cannot be edited)
- Verify your permissions
- Contact administrator if needed
Registration not working
Causes:
- Registration deadline passed
- Event at capacity
- Registration type is "none"
- Event not published
Fix:
- Check registration deadline
- Check available spots
- Verify registration is enabled
- Ensure event is published
Notifications not sending
Causes:
- Send notifications disabled
- No reminders configured
- User contact info missing
- Notification service issue
Fix:
- Enable send_notifications on event
- Configure reminder timings
- Verify attendee contact information
- Check notification service status