A comprehensive campus-wide platform connecting students, mentors, and administrators to manage academic project drives efficiently through all stages - from group formation to final results.
- π View and join active project drives
- π₯ Create or join project groups with invitation codes
- π― Set mentor preferences for group allotment
- π Submit project synopsis for mentor approval
- π Submit checkpoint evaluations (mid-sem, end-sem)
- π View evaluation feedback and final results
- π View assigned groups and student details
- β Review and approve/reject project synopsis
- π Evaluate checkpoint submissions
- π¬ Provide feedback and improvement suggestions
- π Track student progress throughout the drive
- π Create and manage project drives
- π₯ Manage student batches and mentor lists
- βοΈ Configure group sizes and mentor capacity
- π Manual or automatic mentor allotment
- π View comprehensive drive statistics
- π― Manage stage transitions and deadlines
- π’ Declare and publish final results
- Backend: Node.js, Express.js
- Database: MongoDB (Atlas)
- ODM: Mongoose
- Authentication: JWT (JSON Web Tokens)
- File Upload: Multer
- Validation: express-validator
- Drive Creation - Admin sets up project drive with configuration
- Group Formation - Students create/join groups with invitation codes
- Mentor Allotment - Manual or automatic mentor assignment
- Synopsis Submission - Groups submit project proposals for approval
- Checkpoints/Evaluations - Progress tracking through multiple evaluations
- Result Declaration - Final consolidated results publication
CampusCurator/
βββ backend/ # Node.js/Express API
β βββ config/ # Configuration files
β β βββ database.js # MongoDB connection
β βββ controllers/ # Business logic
β β βββ authController.js
β β βββ driveController.js
β β βββ groupController.js
β βββ middleware/ # Express middleware
β β βββ auth.js # JWT authentication
β β βββ errorHandler.js # Error handling
β β βββ upload.js # File upload config
β βββ models/ # Mongoose schemas
β β βββ User.js
β β βββ Drive.js
β β βββ Group.js
β β βββ Synopsis.js
β β βββ CheckpointSubmission.js
β β βββ Evaluation.js
β β βββ Result.js
β β βββ Notification.js
β βββ routes/ # API routes
β β βββ auth.js
β β βββ drives.js
β β βββ groups.js
β β βββ synopsis.js
β β βββ checkpoints.js
β β βββ evaluations.js
β β βββ results.js
β β βββ notifications.js
β βββ uploads/ # File storage
β βββ .env.example # Environment template
β βββ package.json
β βββ server.js # Entry point
β βββ README.md # Backend docs
βββ database/ # Database documentation
β βββ SCHEMA.md # Complete schema reference
β βββ DATABASE_SETUP.md # MongoDB Atlas setup guide
βββ QUICKSTART.md # Quick setup guide
βββ README.md # This file
βββ LICENSE
- Node.js (v14+)
- npm or yarn
- MongoDB Atlas account (free tier)
git clone https://github.com/ankitsingh015/CampusCurator.git
cd CampusCuratorFollow the detailed guide in database/DATABASE_SETUP.md to:
- Create a free MongoDB Atlas cluster
- Set up database user and network access
- Get your connection string
cd backend
npm install
cp .env.example .env
# Edit .env with your MongoDB URI and other configsnpm run devServer runs at http://localhost:5000
# Health check
curl http://localhost:5000/health
# Register admin user
curl -X POST http://localhost:5000/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"name": "Admin",
"email": "admin@example.com",
"password": "admin123",
"role": "admin"
}'π For detailed setup instructions, see QUICKSTART.md
- Quick Start Guide - Get up and running in 5 steps
- Database Setup - MongoDB Atlas configuration
- Database Schema - Complete schema documentation
- Backend API - API endpoints and usage
POST /api/auth/register - Register new user
POST /api/auth/login - Login user
GET /api/auth/me - Get current user
GET /api/auth/logout - Logout user
POST /api/drives - Create drive
GET /api/drives - List drives
GET /api/drives/:id - Get drive details
PUT /api/drives/:id - Update drive
DELETE /api/drives/:id - Delete drive
GET /api/drives/:id/stats - Get statistics
PUT /api/drives/:id/stage - Update stage
POST /api/groups - Create group
GET /api/groups - List groups
GET /api/groups/:id - Get group details
POST /api/groups/join - Join with code
PUT /api/groups/:id/members/:mid - Manage members
DELETE /api/groups/:id - Delete group
PUT /api/groups/:id/mentor - Allot mentor (Admin)
POST /api/groups/auto-allot/:driveId - Auto-allot (Admin)
Full API documentation in backend/README.md
- Users - Students, Mentors, Admins
- Drives - Project drive configurations
- Groups - Student groups with members
- Synopsis - Project proposals
- CheckpointSubmissions - Progress submissions
- Evaluations - Mentor evaluations
- Results - Final consolidated results
- Notifications - System notifications
Detailed schema in database/SCHEMA.md
| Role | Permissions |
|---|---|
| Admin | Create drives, manage all groups, allot mentors, publish results |
| Mentor | View assigned groups, review synopsis, evaluate checkpoints |
| Student | Create/join groups, submit synopsis & checkpoints, view results |
PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb+srv://...
JWT_SECRET=your_secret_key
JWT_EXPIRE=30d
FRONTEND_URL=http://localhost:3000
MAX_FILE_SIZE=10485760cd backend
npm run dev # Auto-reload with nodemoncd backend
npm start# Register
curl -X POST http://localhost:5000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"name":"Test","email":"test@test.com","password":"test123","role":"student","batch":"2025"}'
# Login
curl -X POST http://localhost:5000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"test@test.com","password":"test123"}'
# Use Postman for easier testing- Backend API with authentication
- Drive management system
- Group formation with invitation codes
- Mentor allotment (manual & auto)
- Database schema and models
- Complete synopsis submission workflow
- Checkpoint submission with file uploads
- Evaluation system with feedback
- Result declaration and publication
- Email notification system
- Real-time notifications (Socket.io)
- Frontend application (React/Vue)
- File preview and management
- Analytics dashboard
- Mobile responsive design
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the terms included in the LICENSE file.
- Ankit Singh - @ankitsingh015
- MongoDB Atlas for database hosting
- Express.js community
- All contributors and testers
For issues, questions, or suggestions:
- Open an issue on GitHub
- Check documentation in
/databaseand/backend - Review MongoDB Atlas and Express.js documentation
Made with β€οΈ for efficient campus project management