|
1 | | -# Univent - College Event Management System |
| 1 | +# Univent - Real-Time College Event Management System (MERN Stack) |
2 | 2 |
|
3 | 3 | <div align="center"> |
4 | | - <img src="frontend/public/logo3.jpg" alt="Univent Logo" width="800" /> |
| 4 | + <img src="frontend/public/logo3.jpg" alt="Univent - College Event Management System Logo" width="800" /> |
5 | 5 | </div> |
6 | 6 |
|
7 | | -## Overview |
8 | | -Univent is a real-time event management platform designed specifically for college environments. It enables seamless organization and participation in college events, featuring live updates and interactive leaderboards. |
| 7 | +<p align="center"> |
| 8 | + <a href="https://github.com/AbhishekBalija/Univent/blob/main/LICENSE"><img src="https://img.shields.io/github/license/AbhishekBalija/Univent?style=for-the-badge" alt="License"></a> |
| 9 | + <a href="#"><img src="https://img.shields.io/badge/status-active-success.svg?style=for-the-badge" alt="Status"></a> |
| 10 | + <a href="#"><img src="https://img.shields.io/github/last-commit/AbhishekBalija/Univent?style=for-the-badge" alt="Last Commit"></a> |
| 11 | +</p> |
9 | 12 |
|
10 | | -## Key Features |
11 | | -- 🎫 Event Management & Registration |
12 | | -- 📢 Real-time Announcements |
13 | | -- 🏆 Live Leaderboard Updates |
14 | | -- 👥 Role-based Access Control |
15 | | -- 📱 Real-time Notifications |
16 | | -- 📊 Event Analytics |
| 13 | +## 🚀 Overview |
| 14 | +Univent is a comprehensive, real-time event management platform designed specifically for the dynamic environment of colleges and universities. Built on the **MERN stack (MongoDB, Express.js, React.js, Node.js)** with a **microservice architecture**, it provides a centralized system for organizing and participating in college fests, workshops, and technical events. The platform features live announcements and interactive leaderboards to boost engagement and streamline communication between organizers and participants. |
17 | 15 |
|
18 | | -<div align="center"> |
19 | | - <img src="frontend/public/univent-readme-images/event-page.png" alt="Event Management" width="600" /> |
20 | | - <p><em>Event Management Interface</em></p> |
21 | | -</div> |
22 | | - |
23 | | -## Technology Stack |
24 | | -- **Frontend**: React.js with TailwindCSS |
25 | | -- **Backend**: Node.js with Express.js |
26 | | -- **Database**: MongoDB |
27 | | -- **Real-time Communication**: Socket.IO |
28 | | -- **Authentication**: JWT-based |
| 16 | +This open-source project is a perfect example of a full-stack web application using modern technologies like **Socket.IO for real-time communication** and **JWT for secure authentication**. |
29 | 17 |
|
30 | | -## Architecture |
31 | | -Univent follows a microservice architecture with four core services: |
| 18 | +## ✨ Key Features |
| 19 | +Univent is packed with features to create a seamless event experience: |
32 | 20 |
|
33 | | -- **Authentication Service**: User management and authentication |
34 | | -- **Event Service**: Event creation and management |
35 | | -- **Notification Service**: Real-time announcements |
36 | | -- **Leaderboard Service**: Participant scoring and rankings |
37 | | - |
38 | | -## Getting Started |
39 | | - |
40 | | -### Prerequisites |
41 | | -- Node.js (v14 or higher) |
42 | | -- MongoDB (v4.4 or higher) |
43 | | -- npm or yarn |
44 | | - |
45 | | -### Installation |
46 | | - |
47 | | -1. Clone the repository |
48 | | -```bash |
49 | | -git clone https://github.com/AbhishekBalija/Univent.git |
50 | | -cd univent |
51 | | -``` |
52 | | - |
53 | | -2. Install dependencies |
54 | | -```bash |
55 | | -# Install frontend dependencies |
56 | | -cd frontend |
57 | | -npm install |
58 | | - |
59 | | -# Install backend dependencies |
60 | | -cd ../backend |
61 | | -cd auth-service && npm install |
62 | | -cd ../event-service && npm install |
63 | | -cd ../notification-service && npm install |
64 | | -cd ../leaderboard-service && npm install |
65 | | -``` |
66 | | - |
67 | | -3. Environment Setup |
68 | | -```bash |
69 | | -# Create .env files in each service directory |
70 | | -# Example for auth-service: |
71 | | -MONGODB_URI=mongodb://localhost:27017/univent |
72 | | -JWT_SECRET=your_jwt_secret |
73 | | -PORT=8001 |
74 | | -``` |
75 | | - |
76 | | -4. Start the services |
77 | | -```bash |
78 | | -# Start all services using Docker |
79 | | -docker-compose up |
80 | | - |
81 | | -# Or start services individually |
82 | | -cd auth-service && npm run dev |
83 | | -cd event-service && npm run dev |
84 | | -cd notification-service && npm run dev |
85 | | -cd leaderboard-service && npm run dev |
86 | | -cd frontend && npm start |
87 | | -``` |
88 | | - |
89 | | -## User Roles |
90 | | - |
91 | | -| Role | Access Level | |
92 | | -|------|-------------| |
93 | | -| Admin | Full system access, user management | |
94 | | -| Organizer | Event creation and management | |
95 | | -| Participant | Event registration and participation | |
| 21 | +- 🎫 **Full Event Lifecycle Management**: Create, update, delete, and manage events. |
| 22 | +- 📝 **Easy Participant Registration**: Simple, one-click event registration for students. |
| 23 | +- 📢 **Real-time Announcements**: Push live updates and announcements to all users instantly. |
| 24 | +- 🏆 **Live Gamified Leaderboards**: Dynamic leaderboards that update scores in real-time to foster competition. |
| 25 | +- 👥 **Role-based Access Control (RBAC)**: Distinct roles for Admins, Organizers, and Participants with specific permissions. |
| 26 | +- 📱 **Instant Notifications**: Real-time notifications for event registrations, updates, and more. |
| 27 | +- 📊 **Event Analytics Dashboard**: Organizers can view registration statistics and engagement metrics. |
96 | 28 |
|
97 | 29 | <div align="center"> |
98 | | - <table> |
99 | | - <tr> |
100 | | - <td align="center"> |
101 | | - <img src="frontend/public/univent-readme-images/admin-dashboard.png" alt="Admin Dashboard" width="250" /><br> |
102 | | - <em>Admin Dashboard</em> |
103 | | - </td> |
104 | | - <td align="center"> |
105 | | - <img src="frontend/public/univent-readme-images/organizer-dashboard.png" alt="Organizer Dashboard" width="250" /><br> |
106 | | - <em>Organizer Dashboard</em> |
107 | | - </td> |
108 | | - <td align="center"> |
109 | | - <img src="frontend/public/univent-readme-images/participant-home.png" alt="Participant View" width="250" /><br> |
110 | | - <em>Participant Home</em> |
111 | | - </td> |
112 | | - </tr> |
113 | | - </table> |
| 30 | + <img src="frontend/public/univent-readme-images/event-page.png" alt="Screenshot of the main event management page in Univent" width="600" /> |
| 31 | + <p><em>Event Management Interface for College Fests</em></p> |
114 | 32 | </div> |
115 | 33 |
|
116 | | -## API Services |
| 34 | +## 🛠️ Technology Stack |
| 35 | +This project uses a modern and scalable technology stack: |
117 | 36 |
|
118 | | -### Authentication Service (Port: 8001) |
119 | | -- User registration and login |
120 | | -- JWT token management |
121 | | -- Role-based access control |
| 37 | +- **Frontend**: **React.js** with **TailwindCSS** for a responsive and beautiful UI. |
| 38 | +- **Backend**: **Node.js** with **Express.js** for building robust APIs. |
| 39 | +- **Database**: **MongoDB** with Mongoose for flexible, schema-based data storage. |
| 40 | +- **Real-time Communication**: **Socket.IO** for WebSocket-based live updates. |
| 41 | +- **Authentication**: **JWT (JSON Web Tokens)** for secure, stateless authentication. |
| 42 | +- **Containerization**: **Docker** and Docker Compose for easy setup and deployment. |
122 | 43 |
|
123 | | -<div align="center"> |
124 | | - <img src="frontend/public/univent-readme-images/login-page.png" alt="Authentication" width="400" /> |
125 | | - <p><em>User Authentication Interface</em></p> |
126 | | -</div> |
127 | | - |
128 | | -### Event Service (Port: 8002) |
129 | | -- Event CRUD operations |
130 | | -- Registration management |
131 | | -- Participant tracking |
132 | | - |
133 | | -<div align="center"> |
134 | | - <img src="frontend/public/univent-readme-images/organizer-eventpage.png" alt="Event Management" width="400" /> |
135 | | - <p><em>Event Management Interface</em></p> |
136 | | -</div> |
137 | | - |
138 | | -### Notification Service (Port: 8003) |
139 | | -- Real-time announcements |
140 | | -- Event updates |
141 | | -- System notifications |
142 | | - |
143 | | -<div align="center"> |
144 | | - <img src="frontend/public/univent-readme-images/announcement-page.png" alt="Announcements" width="400" /> |
145 | | - <p><em>Announcements Interface</em></p> |
146 | | -</div> |
147 | | - |
148 | | -### Leaderboard Service (Port: 8004) |
149 | | -- Score tracking |
150 | | -- Ranking calculations |
151 | | -- Achievement management |
| 44 | +## 🏛️ System Architecture |
| 45 | +Univent is designed using a **microservice architecture** to ensure scalability, maintainability, and independent deployment of services. An **API Gateway** acts as a single entry point for all client requests, routing them to the appropriate downstream service. |
152 | 46 |
|
153 | | -<div align="center"> |
154 | | - <img src="frontend/public/univent-readme-images/leaderboard-page.png" alt="Leaderboard" width="400" /> |
155 | | - <p><em>Leaderboard Interface</em></p> |
156 | | -</div> |
| 47 | +- **Authentication Service**: Manages user registration, login, and JWT token generation. |
| 48 | +- **Event Service**: Handles all CRUD operations for events and manages participant registrations. |
| 49 | +- **Notification Service**: Powers real-time announcements and user notifications via Socket.IO. |
| 50 | +- **Leaderboard Service**: Manages participant scoring, ranking calculations, and live leaderboard updates. |
157 | 51 |
|
158 | | -## Real-time Features |
159 | | -The platform uses Socket.IO for real-time updates including: |
160 | | -- Live announcements |
161 | | -- Event status changes |
162 | | -- Leaderboard updates |
163 | | -- Registration notifications |
| 52 | +## 🏁 Getting Started |
164 | 53 |
|
165 | | -## User Settings & Profile |
| 54 | +### Prerequisites |
| 55 | +- Node.js (v14 or higher) |
| 56 | +- MongoDB (v4.4 or higher) |
| 57 | +- npm or yarn |
| 58 | +- Docker (optional, for containerized setup) |
| 59 | + |
| 60 | +### Installation Guide |
| 61 | + |
| 62 | +1. **Clone the repository:** |
| 63 | + ```bash |
| 64 | + git clone [https://github.com/AbhishekBalija/Univent.git](https://github.com/AbhishekBalija/Univent.git) |
| 65 | + cd univent |
| 66 | + ``` |
| 67 | + |
| 68 | +2. **Install server and client dependencies:** |
| 69 | + ```bash |
| 70 | + # Install frontend dependencies |
| 71 | + cd frontend |
| 72 | + npm install |
| 73 | +
|
| 74 | + # Install backend dependencies for each microservice |
| 75 | + cd ../backend |
| 76 | + cd auth-service && npm install |
| 77 | + cd ../event-service && npm install |
| 78 | + cd ../notification-service && npm install |
| 79 | + cd ../leaderboard-service && npm install |
| 80 | + ``` |
| 81 | + |
| 82 | +3. **Environment Variables Setup:** |
| 83 | + Create a `.env` file in each service's root directory (`auth-service`, `event-service`, etc.) and add the required environment variables. |
| 84 | + ```bash |
| 85 | + # Example for auth-service/.env: |
| 86 | + MONGODB_URI=mongodb://localhost:27017/univent |
| 87 | + JWT_SECRET=your_super_secret_jwt_key |
| 88 | + PORT=8001 |
| 89 | + ``` |
| 90 | +
|
| 91 | +4. **Run the Application:** |
| 92 | + ```bash |
| 93 | + # Option 1: Start all services using Docker (Recommended) |
| 94 | + docker-compose up |
| 95 | +
|
| 96 | + # Option 2: Start each service and the frontend individually |
| 97 | + # Terminal 1: Auth Service |
| 98 | + cd backend/auth-service && npm run dev |
| 99 | + # Terminal 2: Event Service |
| 100 | + cd backend/event-service && npm run dev |
| 101 | + # ...and so on for other services |
| 102 | +
|
| 103 | + # Terminal 5: Frontend |
| 104 | + cd frontend && npm start |
| 105 | + ``` |
| 106 | +
|
| 107 | +## 👤 User Roles and Permissions |
| 108 | +
|
| 109 | +| Role | Access Level | Responsibilities | |
| 110 | +|:--- |:--- |:--- | |
| 111 | +| **Admin** | Full system access | Manages users, roles, and system-wide settings. | |
| 112 | +| **Organizer** | Event-level access | Creates and manages their own events, tracks participants, makes announcements. | |
| 113 | +| **Participant** | Basic access | Registers for events, views leaderboard, receives notifications. | |
166 | 114 |
|
167 | 115 | <div align="center"> |
168 | | - <table> |
169 | | - <tr> |
170 | | - <td align="center"> |
171 | | - <img src="frontend/public/univent-readme-images/userprofile-page.png" alt="User Profile" width="250" /><br> |
172 | | - <em>User Profile</em> |
173 | | - </td> |
174 | | - <td align="center"> |
175 | | - <img src="frontend/public/univent-readme-images/usersettings-page.png" alt="User Settings" width="250" /><br> |
176 | | - <em>User Settings</em> |
177 | | - </td> |
178 | | - </tr> |
179 | | - </table> |
| 116 | + <table> |
| 117 | + <tr> |
| 118 | + <td align="center"> |
| 119 | + <img src="frontend/public/univent-readme-images/admin-dashboard.png" alt="Admin Dashboard for User Management" width="250" /><br> |
| 120 | + <em>Admin Dashboard</em> |
| 121 | + </td> |
| 122 | + <td align="center"> |
| 123 | + <img src="frontend/public/univent-readme-images/organizer-dashboard.png" alt="Organizer Dashboard for Event Management" width="250" /><br> |
| 124 | + <em>Organizer Dashboard</em> |
| 125 | + </td> |
| 126 | + <td align="center"> |
| 127 | + <img src="frontend/public/univent-readme-images/participant-home.png" alt="Participant Home Page showing available events" width="250" /><br> |
| 128 | + <em>Participant Home</em> |
| 129 | + </td> |
| 130 | + </tr> |
| 131 | + </table> |
180 | 132 | </div> |
181 | 133 |
|
182 | | -## System Administration |
| 134 | +## 📂 Project Structure |
| 135 | +The repository is organized into a `frontend` directory for the React client and a `backend` directory containing the microservices. |
183 | 136 |
|
184 | | -<div align="center"> |
185 | | - <table> |
186 | | - <tr> |
187 | | - <td align="center"> |
188 | | - <img src="frontend/public/univent-readme-images/admin-usermanagement.png" alt="User Management" width="250" /><br> |
189 | | - <em>User Management</em> |
190 | | - </td> |
191 | | - <td align="center"> |
192 | | - <img src="frontend/public/univent-readme-images/sys-settings.png" alt="System Settings" width="250" /><br> |
193 | | - <em>System Settings</em> |
194 | | - </td> |
195 | | - </tr> |
196 | | - </table> |
197 | | -</div> |
198 | | - |
199 | | -## Project Structure |
200 | 137 | ``` |
201 | 138 | univent/ |
202 | | -├── frontend/ # React frontend |
| 139 | +├── frontend/ # React.js client application |
203 | 140 | │ ├── src/ |
204 | | -│ │ ├── components/ # Reusable components |
205 | | -│ │ ├── pages/ # Page components |
206 | | -│ │ ├── services/ # API services |
207 | | -│ │ └── context/ # React context |
| 141 | +│ ├── components/ # Reusable React components |
| 142 | +│ ├── pages/ # Page-level components |
| 143 | +│ └── services/ # API service functions |
208 | 144 | │ |
209 | 145 | ├── backend/ |
210 | | -│ ├── auth-service/ # Authentication |
211 | | -│ ├── event-service/ # Event management |
212 | | -│ ├── notification-service/ # Real-time notifications |
213 | | -│ ├── leaderboard-service/ # Scoring system |
214 | | -│ └── gateway/ # API Gateway |
| 146 | +│ ├── auth-service/ # Handles user authentication & roles |
| 147 | +│ ├── event-service/ # Handles event CRUD and registration |
| 148 | +│ ├── notification-service/ # Real-time notifications via Socket.IO |
| 149 | +│ ├── leaderboard-service/ # Manages scoring and ranking |
| 150 | +│ └── gateway/ # API Gateway (e.g., Express Gateway) |
| 151 | +│ |
| 152 | +└── docker-compose.yml # Docker configuration for all services |
215 | 153 | ``` |
216 | 154 |
|
217 | | -## License |
218 | | -This project is licensed under the MIT License - see the LICENSE file for details. |
| 155 | +## 📜 License |
| 156 | +This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details. |
0 commit comments