A full-stack platform for event planning, resource allocation, staff management, and client collaboration
Quick Start β’ Features β’ API Docs β’ Architecture
A comprehensive event management solution with role-based access control, real-time messaging, resource allocation, and booking management.
###Users
- π¨βπΌ Event Planners: Create events, manage resources, assign staff, handle bookings
- π· Staff Members: View assigned events, update status, communicate with planners
- π₯ Clients: Book events, track bookings, communicate with planners
π JWT Authentication β’ π€ Role-Based Access β’ π
Event CRUD β’ π¦ Resource Management
π― Resource Allocation β’ π Booking System β’ π¬ Real-time Messaging β’ π Dashboards
π¨ Material Design β’ π± Responsive UI β’ π BCrypt Security β’ β‘ RESTful APIs
- Spring Boot 2.7.17 - Application framework
- Spring Security - Authentication & authorization
- JPA/Hibernate - ORM
- MySQL 8.0 - Database
- JWT - Token-based auth
- Maven - Build tool
- Angular 13+ - Frontend framework
- TypeScript - Language
- RxJS - Reactive programming
- Bootstrap 5 - UI framework
- Material Design - Design system
Java 11+, Node.js 14+, MySQL 8.0+, Maven 3.8+# Clone repository
git clone https://github.com/gajanansr/EventManagement.git
cd EventManagement/server
# Configure MySQL (create database 'event_management')
# Update server/src/main/resources/application.properties with your credentials
# Build and run
mvn clean install
mvn spring-boot:runBackend runs on http://localhost:8080
cd client
npm install
npm startFrontend runs on http://localhost:4200
users (userId, username, password, email, role, phoneNumber, fullName, address)
βββ 1:N βββΊ events (eventID, title, description, dateTime, location, status, assignedStaffId)
βββ 1:N βββΊ allocations (allocationID, eventID, resourceID, quantity)
βββ N:1 βββΊ resources (resourceID, name, type, availability)
users (CLIENT) βββΊ bookings (bookingId, clientId, eventId, requirements, notes, status)
users/events βββΊ messages (messageId, eventId, senderId, content, timestamp, senderRole)
POST /api/user/register # Register new user
POST /api/user/login # Login and get JWT tokenPOST /api/planner/event # Create event
GET /api/planner/events # Get all events
GET /api/planner/event-details/{id} # Get event details
DELETE /api/planner/event/{id} # Delete event
POST /api/planner/resource # Add resource
GET /api/planner/resources # Get all resources
POST /api/planner/allocate-resources # Allocate resource to event
GET /api/planner/staff # Get all staff
POST /api/planner/assign-staff # Assign staff to event
POST /api/planner/send-message # Send message
GET /api/planner/messages/{eventId} # Get event messages
GET /api/planner/bookings # Get all bookings
PUT /api/planner/booking/{id}/status # Update booking statusGET /api/staff/allEvents # Get assigned events only
GET /api/staff/event-details/{id} # Get event details
PUT /api/staff/update-setup/{id} # Update event status
POST /api/staff/send-message # Send message
GET /api/staff/messages/{eventId} # Get event messagesPOST /api/client/create-booking # Create booking
GET /api/client/my-bookings # Get my bookings
GET /api/client/my-booking/{id} # Get booking by ID
GET /api/client/allEvents # Get all events
POST /api/client/send-message # Send message
GET /api/client/messages/{eventId} # Get event messagesGET /api/profile # Get user profile
PUT /api/profile # Update profileAuthorization: All protected endpoints require Authorization: Bearer <jwt_token> header
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Angular Frontend (Client Layer) β
β Components β Services β HTTP Requests + JWT β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β REST API (JSON)
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β Spring Boot Backend (Server Layer) β
β Security Filter β Controllers β Services β Repositories β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β JPA/Hibernate
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β MySQL Database (Data Layer) β
β Tables: users, events, resources, allocations, bookings... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- β JWT-based authentication with 24-hour expiration
- β BCrypt password hashing (10 rounds)
- β Role-based access control (RBAC)
- β CORS configuration
- β SQL injection protection (JPA parameterized queries)
- β Password validation (8-20 chars, uppercase, lowercase, number, special char)
# Register
curl -X POST http://localhost:8080/api/user/register \
-H "Content-Type: application/json" \
-d '{"username":"john","email":"john@test.com","password":"Test@123","role":"CLIENT"}'
# Login
curl -X POST http://localhost:8080/api/user/login \
-H "Content-Type: application/json" \
-d '{"username":"john","password":"Test@123"}'curl -X POST http://localhost:8080/api/planner/event \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title":"Tech Conference",
"description":"Annual tech event",
"dateTime":"2025-12-15T10:00:00",
"location":"Convention Center",
"status":"Active"
}'curl -X POST http://localhost:8080/api/client/create-booking \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"eventId":1,
"requirements":"Wheelchair access needed",
"notes":"VIP table requested"
}'EventManagement/
βββ server/ # Spring Boot Backend
β βββ src/main/java/.../
β β βββ config/ # Security & configurations
β β βββ controller/ # REST controllers
β β βββ dto/ # Data transfer objects
β β βββ entity/ # JPA entities
β β βββ jwt/ # JWT utilities
β β βββ repository/ # JPA repositories
β β βββ service/ # Business logic
β βββ src/main/resources/
β β βββ application.properties # App configuration
β βββ pom.xml # Maven dependencies
β
βββ client/ # Angular Frontend
β βββ src/app/
β β βββ login/ # Login component
β β βββ registration/ # Registration component
β β βββ dashbaord/ # Dashboard (role-specific)
β β βββ create-event/ # Event creation
β β βββ view-events/ # Event listing & messaging
β β βββ add-resource/ # Resource management
β β βββ resource-allocate/ # Resource allocation
β β βββ booking-details/ # Client bookings
β β βββ app-routing.module.ts # Routes
β βββ src/services/
β β βββ auth.service.ts # Authentication service
β β βββ http.service.ts # HTTP API service
β βββ src/styles.scss # Global styles
β βββ package.json # npm dependencies
β
βββ README.md # Project documentation
βββ .gitignore
MySQL Connection Error
# Check MySQL is running
sudo systemctl status mysql
# Verify credentials in application.propertiesPort 8080 Already in Use
# Change port in application.properties
server.port=8081CORS Error
# Verify SecurityConfig.java allows your frontend origin
# Check environment.ts has correct backend URLJWT Token Expired
# Re-login to get new token (tokens expire after 24 hours)
# Adjust jwt.expiration in application.properties if needed- 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
- Repository: github.com/gajanansr/EventManagement
- Issues: Report Bug / Request Feature
MIT License - see LICENSE file for details
Built with β€οΈ using Spring Boot & Angular
β Star this repo if you find it helpful!