Overview
Tech hubs run events constantly — meetups, workshops, demo days. An events system with RSVP is core community infrastructure (every competitor has it) and later a revenue stream ([BE-26] paid tickets).
Proposed Design
New module backend/src/events/:
Event entity: title, slug, description, coverImageUrl (Cloudinary — reuse backend/src/cloudinary/), startsAt, endsAt, venue (free text or a workspaceId link), capacity (nullable = unlimited), isPublic (visible to non-members), status (DRAFT, PUBLISHED, CANCELLED), createdById.
EventRsvp entity: eventId, userId, status (GOING, CANCELLED, WAITLISTED), unique (eventId, userId).
Endpoints
| Method |
Path |
Access |
| GET |
/events · /events/:slug |
Public lists PUBLISHED+isPublic; members see all PUBLISHED |
| POST/PATCH/DELETE |
/events... |
ADMIN/STAFF (publish, edit, cancel) |
| POST |
/events/:id/rsvp · DELETE .../rsvp |
Member |
| GET |
/events/:id/attendees |
ADMIN/STAFF |
Tasks
Acceptance Criteria
Dependencies
Blocks [BE-26], [FE-11], [FE-12].
Notes for Contributors
Mirror module conventions from bookings. Comment below to be assigned.
Overview
Tech hubs run events constantly — meetups, workshops, demo days. An events system with RSVP is core community infrastructure (every competitor has it) and later a revenue stream ([BE-26] paid tickets).
Proposed Design
New module
backend/src/events/:Evententity:title,slug,description,coverImageUrl(Cloudinary — reusebackend/src/cloudinary/),startsAt,endsAt,venue(free text or a workspaceId link),capacity(nullable = unlimited),isPublic(visible to non-members),status(DRAFT, PUBLISHED, CANCELLED),createdById.EventRsvpentity:eventId,userId,status(GOING, CANCELLED, WAITLISTED), unique (eventId, userId).Endpoints
Tasks
startsAt.Acceptance Criteria
Dependencies
Blocks [BE-26], [FE-11], [FE-12].
Notes for Contributors
Mirror module conventions from
bookings. Comment below to be assigned.