Create quizzes. Host coding contests. Track leaderboards. Generate certificates.
All in one beautifully designed, real-time platform.
🚀 Live Demo • 📖 Documentation • 🐛 Report Bug • 💡 Request Feature
| Feature | Description |
|---|---|
| 🏛️ Organization Management | Multi-tenant support — each org gets its own dashboard, events, and student roster |
| 📝 MCQ Quiz Engine | Create timed quizzes with single/multiple-choice questions, auto-grading, and analytics |
| 💻 Coding Contests | Full-featured coding contest system with problem management, test cases, and submissions |
| 📊 Real-time Leaderboards | WebSocket-powered live leaderboards that update as students submit |
| 🏆 Certificate Generation | Auto-generate participation & rank certificates (PDF-ready) |
| 👤 Editable Profiles | Students can edit their username, full name, roll number, university/college, and academic year |
| 🔐 Role-Based Access | Student, Org Admin, and Super Admin roles with fine-grained permissions |
| 🌗 Dark / Light Theme | Premium glassmorphism UI with automatic theme switching |
| 📱 Fully Responsive | Works beautifully on desktop, tablet, and mobile |
- React 18 — Component-based UI with hooks
- Vite 5 — Lightning-fast HMR and build
- React Router v6 — Client-side routing
- Axios — HTTP client with interceptors
- SockJS + STOMP — WebSocket real-time communication
- React Toastify — Toast notifications
- TailwindCSS — Utility-first CSS framework
- Custom CSS — Glassmorphism, gradients, micro-animations
- Spring Boot 3 — RESTful API framework
- Spring Security + JWT — Authentication & authorization
- MongoDB — NoSQL document database
- WebSocket (STOMP) — Real-time event broadcasting
- Lombok — Boilerplate reduction
EventProject/
├── event-frontend/ # React + Vite frontend
│ ├── src/
│ │ ├── components/ # Reusable components (Navbar, etc.)
│ │ ├── context/ # Auth context provider
│ │ ├── pages/ # Route pages (Dashboard, Profile, Quiz…)
│ │ ├── services/ # API service layer
│ │ └── styles/ # Custom CSS modules
│ ├── index.html
│ └── vite.config.js
│
├── src/main/java/com/company/event/ # Spring Boot Backend
│ ├── user/ # User entity, controller, service
│ ├── quiz/ # MCQ quiz engine
│ ├── contestPackage/ # Coding contest system
│ ├── organization/ # Organization management
│ ├── security/ # JWT auth, filters, config
│ └── websocket/ # Real-time WebSocket service
│
├── pom.xml # Maven dependencies
└── README.md
Ensure you have the following installed:
| Tool | Version | Download |
|---|---|---|
| Node.js | ≥ 18.x | nodejs.org |
| npm | ≥ 9.x | Comes with Node.js |
| Java JDK | ≥ 17 | adoptium.net |
| Maven | ≥ 3.8 | maven.apache.org |
| MongoDB | ≥ 6.x | mongodb.com |
git clone https://github.com/krishna3163/EventProject.git
cd EventProject# Set environment variables (or add to application.properties)
# SPRING_DATA_MONGODB_URI=mongodb://localhost:27017/eventdb
# JWT_SECRET=your-secret-key
# Build & run the Spring Boot server
mvn clean install -DskipTests
mvn spring-boot:runThe backend will start on http://localhost:8080.
cd event-frontend
# Install dependencies
npm install
# Create .env file (optional — defaults to localhost:8080)
echo "VITE_API_BASE_URL=http://localhost:8080" > .env
# Start the dev server
npm run devThe frontend will start on http://localhost:5173.
| Field | Value |
|---|---|
| Username | admin |
| Password | admin123 |
⚠️ Change the default admin password in production!
Users can edit the following fields from their profile page:
| Field | Description | Example |
|---|---|---|
| Username | Unique identifier | john_doe |
| First Name | Given name | John |
| Last Name | Family name | Doe |
| Contact email | [email protected] |
|
| University / College | Institution name | IIT Delhi |
| Roll Number | Student ID | 22CS104 |
| Academic Year | Current year of study | 3rd Year |
| Department | Branch/major | Computer Science |
- Log in to your account
- Click on your avatar or navigate to
/profile - Click the ✏️ Edit Profile button
- Modify any editable field
- Click Save Changes — updates are sent to the backend via
PATCH /api/users/me/profile
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/login |
Login with username/email + password |
| POST | /api/auth/register/student |
Register a new student |
| POST | /api/auth/register/organization |
Register a new organization |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/users/me |
Get current user profile |
| PATCH | /api/users/me/profile |
Update own profile fields |
| GET | /user/getById/{id} |
Get user by ID |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/events/getAllEvent |
List all events |
| POST | /api/events/createEvent |
Create a new event (admin) |
| POST | /api/mcq/start/{eventId} |
Start a quiz |
| POST | /api/mcq/submit/{eventId} |
Submit quiz answers |
| Method | Endpoint | Description |
|---|---|---|
| GET | /contest/getAll |
List all contests |
| POST | /submission/run |
Run code against test cases |
| POST | /submission |
Submit a solution |
| GET | /leaderboard/{contestId} |
Get contest leaderboard |
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Frontend hot-reload is enabled via Vite — just save your files
- Backend changes require a restart (or use Spring DevTools for auto-reload)
- The API service layer (
src/services/api.js) centralizes all API calls — add new endpoints there - CSS styles follow a glassmorphism design system — check
styles/LandingPage.cssfor patterns
The frontend is Vercel-ready:
cd event-frontend
npm run build
# Deploy the 'dist' folder to VercelDeploy the Spring Boot JAR to any cloud provider:
mvn clean package -DskipTests
java -jar target/event-0.0.1-SNAPSHOT.jarSet these environment variables in production:
SPRING_DATA_MONGODB_URI— MongoDB connection stringJWT_SECRET— Secret key for JWT tokensSPRING_PROFILES_ACTIVE=prod
This project is licensed under the MIT License — see the LICENSE file for details.
Built with ❤️ for the developer community
⭐ Star this repo if you found it useful!