How farooqkhwaja/socialeventswebsite works
Salsa Events is a web calendar for sharing dance events and tracking attendance. Visitors browse, search and filter events, then open event cards to view details, respond Going/Maybe/Not going, share events or download calendar files. Organizers can add, edit, pin, cancel/restore and delete events. The page delegates event state and mutations to a client hook, which calls API routes that validate or update event records in MongoDB. The tree and excerpts support these main paths; some documented-by-UI integrations and secondary routes are unsampled, so their wiring is not inferred.
Main entry points: api.ts API client · route.ts Event collection API · mongodb.ts MongoDB · Event.ts Event model
Components 25
Event browsing
- Event calendar page
salsa-events/src/app/page.tsx - Search and filters
salsa-events/src/components/Filters.tsx - Event cards
salsa-events/src/components/EventCard.tsx
Event management
- Event detail API
salsa-events/src/app/api/events/[id]/route.ts - Pin API
salsa-events/src/app/api/events/[id]/pin/route.ts - Event status API
salsa-events/src/app/api/events/[id]/status/route.ts - Event editor
salsa-events/src/components/EventForm.tsx - Calendar header
salsa-events/src/components/AppHeader.tsx
Attendance
- Attendance API
salsa-events/src/app/api/events/[id]/attendance/route.ts - Attendee rename API
salsa-events/src/app/api/attendees/[id]/route.ts - Attendance controls
salsa-events/src/components/AttendanceControls.tsx - Local attendee identity
salsa-events/src/lib/localAttendee.ts - Update attendee name
salsa-events/src/components/NameSettings.tsx
API and persistence
- Event state hook
salsa-events/src/lib/useEvents.ts - API client
salsa-events/src/lib/api.ts - Event collection API
salsa-events/src/app/api/events/route.ts - MongoDB
salsa-events/src/lib/mongodb.ts - Event model
salsa-events/src/models/Event.ts - Event serialization
salsa-events/src/lib/serialize.ts - Event validation
salsa-events/src/lib/validateEvent.ts - Old event cleanup
salsa-events/src/lib/cleanupOldEvents.ts
Sharing and calendar
- Share event
salsa-events/src/lib/share.ts - Calendar export
salsa-events/src/lib/ics.ts
Other components
- Visitor
Connections 38
- Visitor → Event calendar page: opens
- Event calendar page → Event state hook: loads and mutates
- Event calendar page → Search and filters: renders
- Event calendar page → Event cards: renders
- Event calendar page → Event editor: opens editor
- Event cards → Attendance controls: renders
- Event cards → Share event: builds share text
- Event cards → Calendar export: builds calendar file
- Share event → WhatsApp: opens share link
- Event state hook → Local attendee identity: gets identity
- Attendance controls → Event state hook: submits response
- Calendar header → Update attendee name: provides settings
- Update attendee name → API client: renames attendee
- Event state hook → API client: calls
- API client → Event collection API: requests events
- API client → Event detail API: updates or deletes
- API client → Pin API: changes pin
- API client → Event status API: changes status
- API client → Attendance API: changes attendance
- Event collection API → Event validation: validates input
- Event collection API → Old event cleanup: sweeps old events
- Event collection API → MongoDB: connects
- Event detail API → MongoDB: connects
- Pin API → MongoDB: connects
- Event status API → MongoDB: connects
- Attendance API → MongoDB: connects
- Attendee rename API → MongoDB: connects
- Event collection API → Event model: reads and writes
- Event detail API → Event model: updates and deletes
- Pin API → Event model: updates
- Event status API → Event model: updates
- Attendance API → Event model: updates
- Attendee rename API → Event model: updates
- Event collection API → Event serialization: serializes events
- Event detail API → Event serialization: serializes event
- Pin API → Event serialization: serializes event
- Event status API → Event serialization: serializes event
- Attendance API → Event serialization: serializes event