A full-stack web platform designed for VIT SWC (Student Welfare Committee) to streamline the creation, management, and oversight of student clubs.
Built for clean role-based workflows, seamless member control, and an intuitive dashboard experience.
🔐 Role-based access
🧑💼 Admins can create/edit clubs, assign roles, and manage members.
🎓 Presidents manage members of their own club.
👨🏫 Faculty Coordinators get oversight access.
👥 Students can explore clubs and request to join.
| Path | Description |
|---|---|
/backend |
Express.js backend server |
├── /models |
MongoDB Mongoose schemas (User, Club, Member) |
├── /routes |
Express route handlers for each role/module |
├── /controllers |
Business logic for each route |
├── /middleware |
Auth, role checks, and error handling |
├── /utils |
Utility functions (JWT, validation, etc.) |
└── server.js |
Entry point of the backend app |
/frontend |
Bolt-based frontend (Next.js + Tailwind) |
├── /app |
Next.js App Router setup |
├── /components |
Reusable UI components (Navbar, Card, etc.) |
├── /pages |
Page-based routing (for static routes if needed) |
├── /lib |
Helpers like API fetchers, auth checks, etc. |
├── /styles |
Custom Tailwind CSS and global styles |
└── tailwind.config.js |
Tailwind theme configuration |
.env |
Environment variables (JWT secret, DB URI) |
README.md |
Project documentation |
package.json |
Project dependencies |
- 📊 Admin Dashboard – Club overview, quick actions, and search
- 🏷️ Club Creation – Add name, description, category
- 👥 Member Management – Add/Remove members, view lists
- 👑 Role Assignment – Assign President & Faculty Coordinator (unique per club)
- ✉️ Join Requests – Students can request to join clubs, admins approve
- 🔐 JWT Authentication – Secure and scalable
- 🎯 Role-Based Route Protection – Separate views and permissions
Have a feature in mind? Found a bug?
Feel free to open an issue or pull request — contributions are welcome!