Summary
Allows users to browse public events and their teams, filling a gap where events and teams can be created but never listed.
Contexts
Events have POST /, GET /:slug, POST /:slug/join, DELETE /:slug/leave, GET /:slug/attendees — but no GET / to list events. Teams similarly lack a list endpoint. The analytics /views endpoint (analytics.ts:90-159) already demonstrates the pagination pattern ({ data, meta: { page, limit, total, totalPages } }).
Tasks
Acceptance Criteria
Area
backend
Difficulty
Medium
Summary
Allows users to browse public events and their teams, filling a gap where events and teams can be created but never listed.
Contexts
Events have
POST /,GET /:slug,POST /:slug/join,DELETE /:slug/leave,GET /:slug/attendees— but noGET /to list events. Teams similarly lack a list endpoint. The analytics/viewsendpoint (analytics.ts:90-159) already demonstrates the pagination pattern ({ data, meta: { page, limit, total, totalPages } }).Tasks
GET /api/eventslisting public events withpageandlimitquery params, sorted bystartDateGET /api/teamslisting teams the authenticated user belongs to, with pagination{ data: [...], meta: { page, limit, total, totalPages } }event.test.tsandteam.test.tsAcceptance Criteria
GET /api/eventsreturns paginated public eventsGET /api/teamsreturns paginated teams for the authenticated userpage/limitvalues return 400Area
backendDifficulty
Medium