
Club management with resource-level ownership enforcement and approval workflows.
Handles club membership and event logistics for organizations with multiple clubs under one platform. Membership requests go through an admin approval step before access is granted. Event operations are enforced at the resource level, not just role level — a club admin can only modify events they created, preventing cross-club interference. Ownership is stored as a denormalized creator ID on each event document, making the authorization check a single field comparison on read rather than a collection join. The MERN stack is kept intentionally lean here — no UI library, no state management library beyond React state — to demonstrate fundamentals without scaffolding.
Frontend: React
Backend: Node.js, Express
Database: MongoDB
Auth: JWT