Manch: who builds what

Manch is the one place where every MJCET club posts its events and every student finds them. Five developers, five full slices. Each person owns their pages, their APIs and their database tables, so nobody waits on a "frontend team" or a "backend team".

Creative brief for this page

Concept: every dev gets a ticket stub, like the ones at a college fest gate. Tear the stub, read your name, read your slice. Palette comes from MJCET's world: fog-grey notice boards, petrol-blue ink, and five stub colours so you can find yourself fast.

Assumptions: brand name "Manch" is a placeholder (Urdu/Hindi for stage). Stack suggestion is React + Node/Express + PostgreSQL + Socket.io; swap it if the team already agreed on something else. Real club logos and MJCET photos are needed from the club heads before launch.

Roles in the system

  • Student: browses, RSVPs, joins live, sees recaps
  • Club admin: registers a club, hosts events, approves people, runs the live room, builds the recap
  • Super admin: approves new clubs (a handful of staff)
ReactExpressPostgreSQLSocket.ioMulter + S3 or CloudinaryJWT

The five slices

Each slice has about 6 pages and 10 to 14 endpoints. Counts are shown on every stub so you can check the split is fair.

Shared rules (agree on day one, 30 minutes)

One repo, five foldersBackend routes live in /server/modules/<name>, pages in /client/src/features/<name>. Touch only your own folder; open a PR for anything shared.
Response shapeEvery API returns { ok, data, error }. Errors carry a plain message the UI can show as is.
Schema ownerRobin runs the first migration with every table below as a stub. After that, each dev edits only their own tables.
Upload serviceScoop ships POST /api/uploads in week one. Robert (QR) and Roy (payment screenshots) call it, never their own Multer setup.
Auth guardsRobin exports requireAuth, requireRole("club_admin") and requireClubOwner. Everyone imports them.

Who owns which table

TableOwnerKey fields
users, clubsRobinrole, email, club status (pending, approved), owner_id
events, event_settingsRobertclub_id, capacity, approval_mode (auto_until_full or manual), is_paid, price, qr_url, status (draft, open, live, ended)
rsvps, paymentsRoyevent_id, user_id, answers, status (pending, approved, rejected, waitlist), screenshot_url, verified_by
speakers, quizzes, questions, answers, doubts, doubt_votesBaskinquiz state, points per answer, upvote count, pinned
gallery_items, certificates, leaderboard_entries, tech_links, uploadsScoopevent_id, file_url, points, rank, link title and url

Timeline that avoids blocking

PhaseWhat landsWho unblocks whom
Days 1 to 3Repo, migration, auth, guards, upload service, design tokens, mock JSON for every endpointRobin and Scoop ship foundations. Others build UI against mock JSON in /mocks.
Days 4 to 8Club registration, host-event form, discover feed, RSVP flow, speaker and doubt boardsRobert needs Robin's club approval. Roy needs Robert's event detail.
Days 9 to 13Attendee approval queue, payment verification, live quiz with sockets, recap page, leaderboardScoop reads Baskin's quiz scores. Baskin reads Roy's approved list for room access.
Days 14 to 16Integration, bug bash on one real club event, phone testingEveryone. Pick one real club to test with.