How cdanh11/event-management-system works
Evently is an event-management web app for attendees, organizers, and assigned staff. Attendees discover events, register, and use QR tickets; organizers create and operate events, assign staff, and monitor occupancy; staff check tickets in. The React client uses REST with JWT/refresh-cookie authentication and WebSockets for occupancy. FastAPI routers implement the domain operations over SQLAlchemy models and PostgreSQL. The README documents lifecycle automation and post-commit notifications; sampled excerpts do not show every router’s internal calls, so those links are documented at the product boundary rather than inferred between handlers.
Main entry points: events.py Event management · apiClient.ts API client · App.tsx Role-based app · main.py FastAPI application
Components 28
Web client
- Role-based app
Frontend/src/app/App.tsx - Attendee pages
Frontend/src/pages/attendee - Organizer pages
Frontend/src/pages/organizer - Staff check-in
Frontend/src/pages/staff/CheckinDesk.tsx - API client
Frontend/src/api/apiClient.ts - Live occupancy
Frontend/src/realtime/useOccupancy.ts
Identity and access
- Auth context
Frontend/src/features/auth/AuthContext.tsx - Authentication
Backend/app/routers/auth.py - Token security
Backend/app/security.py - Role access
Backend/app/access.py
Event operations
- Event management
Backend/app/routers/events.py - Event lifecycle
Backend/app/services/lifecycle.py
Attendance and entry
- Registrations
Backend/app/routers/registrations.py - Tickets
Backend/app/routers/tickets.py - Check-ins
Backend/app/routers/checkins.py - Staff assignments
Backend/app/routers/staff.py - Notifications
Backend/app/services/notifier.py
API and persistence
- FastAPI application
Backend/app/main.py - Occupancy socket API
Backend/app/routers/realtime.py - Occupancy hub
Backend/app/realtime.py - Domain records
Backend/app/models.py - PostgreSQL
- DB sessions
Backend/app/db.py - Validation schemas
Backend/app/schemas.py - Response serializers
Backend/app/serializers.py - Event time handling
Backend/app/timeutils.py - Cursor pagination
Backend/app/cursors.py
Other components
- User
Connections 36
- User → Role-based app: uses
- Role-based app → Attendee pages: routes to
Frontend/src/app/App.tsx - Role-based app → Organizer pages: routes to
Frontend/src/app/App.tsx - Role-based app → Staff check-in: routes to
Frontend/src/app/App.tsx - Role-based app → Auth context: reads auth
Frontend/src/app/App.tsx - Attendee pages → API client: requests
- Organizer pages → API client: requests
- Staff check-in → API client: requests
- Auth context → API client: calls
Frontend/src/features/auth/AuthContext.tsx - API client → FastAPI application: REST calls
- FastAPI application → Authentication: mounts routes
Backend/app/main.py - FastAPI application → Event management: mounts routes
Backend/app/main.py - FastAPI application → Occupancy socket API: mounts routes
- Authentication → Token security: issues tokens
Backend/app/routers/auth.py - Authentication → DB sessions: uses session
Backend/app/routers/auth.py - Authentication → Validation schemas: validates
Backend/app/routers/auth.py - Event management → Registrations: supports sign-up
- Attendee pages → Registrations: registers
- Attendee pages → Tickets: views tickets
- Staff check-in → Check-ins: checks in
- Organizer pages → Staff assignments: assigns staff
- Organizer pages → Event management: manages events
- Event management → Notifications: requests notices
Backend/app/routers/events.py - FastAPI application → Event lifecycle: starts sweep
Backend/app/main.py - Event lifecycle → Occupancy hub: publishes occupancy
Backend/app/services/lifecycle.py - Live occupancy → API client: REST fallback
Frontend/src/realtime/useOccupancy.ts - Live occupancy → Occupancy socket API: WebSocket
- Occupancy socket API → Occupancy hub: uses hub
- Event management → DB sessions: queries
Backend/app/routers/events.py - DB sessions → PostgreSQL: connects
Backend/app/db.py - Domain records → DB sessions: maps records
Backend/app/models.py - Event management → Domain records: queries records
Backend/app/routers/events.py - Event management → Validation schemas: validates
Backend/app/routers/events.py - Event management → Response serializers: serializes
Backend/app/routers/events.py - Event management → Cursor pagination: paginates
Backend/app/routers/events.py - Domain records → Event time handling: uses time type
Backend/app/models.py