A professional full-stack college event management platform built with the MERN stack.
β¨ User Features:
- Browse all upcoming college events
- Register for events and receive QR codes via email
- View registered events in personal dashboard
- Secure authentication with JWT
π Admin Features:
- Secure admin login
- Create, edit, and delete events
- Upload event images (Cloudinary integration)
- View all registrations and analytics
- Send confirmation emails to registrants
Frontend:
- React.js 18
- Vite (Build tool)
- TailwindCSS (Styling)
- React Router DOM (Navigation)
- Axios (HTTP client)
Backend:
- Node.js + Express.js
- MongoDB + Mongoose
- JWT + bcrypt (Authentication)
- Cloudinary (Image uploads)
- QRCode (QR generation)
- Nodemailer (Email service)
eventsync/
βββ client/ # React frontend
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ context/
β β βββ api/
β β βββ styles/
β βββ package.json
βββ server/ # Express backend
β βββ controllers/
β βββ models/
β βββ routes/
β βββ middlewares/
β βββ utils/
β βββ config/
β βββ scripts/
β βββ package.json
βββ README.md
- Node.js 16+ and npm
- MongoDB Atlas account (or local MongoDB)
- Cloudinary account (for image uploads)
- SMTP credentials (Gmail recommended)
- Clone and navigate to project:
cd /home/arshdeep/Desktop/eventsyc- Backend Setup:
cd server
npm install- Configure environment variables:
# Copy the example file
cp .env.example .envEdit server/.env with your credentials:
PORT=5000
MONGO_URI=mongodb+srv://rajput24:Arsh0987k@cluster0.ojmklpo.mongodb.net/eventsync?retryWrites=true&w=majority
JWT_SECRET=eventsync_super_secret_jwt_key_2025
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_key
CLOUDINARY_API_SECRET=your_cloudinary_secret
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_password
FROM_EMAIL=eventsync@example.com- Seed admin user:
npm run seed:adminDefault admin credentials:
- Email:
admin@eventsync.com - Password:
admin123
- Start backend:
npm run devServer runs on http://localhost:5000
- Frontend Setup (in new terminal):
cd client
npm install
npm run devFrontend runs on http://localhost:3000
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/admin/login- Admin login
GET /api/events- Get all events (public)GET /api/events/:id- Get event details (public)POST /api/events- Create event (admin only)PUT /api/events/:id- Update event (admin only)DELETE /api/events/:id- Delete event (admin only)
POST /api/register- Register for event (authenticated)GET /api/register/me- Get user's registrations (authenticated)
GET /api/admin/dashboard- Get dashboard data (admin only)
- Visit http://localhost:3000
- Register or login
- Browse events on the home page
- Click "View Details" on any event
- Register for the event
- Check your email for QR code
- View all registrations in "My Events" dashboard
- Click "Admin" link in navbar
- Login with admin credentials
- View dashboard with statistics
- Click "+ Create Event" to add new event
- Fill form and upload image
- Manage events from admin panel
npm start # Production server
npm run dev # Development with nodemon
npm run seed:admin # Create admin user
npm run lint # Run ESLint
npm test # Run testsnpm run dev # Development server
npm run build # Production build
npm run preview # Preview production build
npm run lint # Run ESLintMONGO_URI- MongoDB connection stringJWT_SECRET- Secret for JWT tokensCLOUDINARY_CLOUD_NAME- Cloudinary cloud nameCLOUDINARY_API_KEY- Cloudinary API keyCLOUDINARY_API_SECRET- Cloudinary API secretSMTP_HOST- SMTP server hostSMTP_PORT- SMTP server portSMTP_USER- SMTP usernameSMTP_PASS- SMTP password (use App Password for Gmail)FROM_EMAIL- Sender email address
VITE_API_URL- Backend API URL (defaults to http://localhost:5000/api)
- Password hashing with bcrypt
- JWT-based authentication
- Input validation middleware
- Protected admin routes
- Secure image uploads
- Email verification for registrations
- Lazy loading for components
- Optimized images via Cloudinary
- MongoDB indexing
- Efficient React state management
- Tailwind CSS purging in production
MongoDB connection fails:
- Check your MongoDB URI
- Ensure IP is whitelisted in MongoDB Atlas
- Verify network connection
Cloudinary upload fails:
- Verify Cloudinary credentials
- Check image size (max 5MB recommended)
- Ensure proper API permissions
Email not sending:
- For Gmail, use App Password (not regular password)
- Enable "Less secure app access" if needed
- Check SMTP credentials
- Verify email in .env matches SMTP_USER
Port already in use:
# Kill process on port 5000
lsof -ti:5000 | xargs kill -9
# Or use different port in .env
PORT=5001- Event categories with filters
- Search functionality
- Event capacity limits
- Ticket booking with payments
- Real-time notifications
- QR code scanning app
- Event feedback/ratings
- Calendar integration
- Social media sharing
- Multi-language support
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is licensed under the MIT License.
For issues or questions:
- Create an issue in the repository
- Email: support@eventsync.com
Built with β€οΈ for college event management