This application enables university students to discover, create, and engage with campus events. It supports different types of events (public, private, RSO), user roles (Student, Admin, SuperAdmin), and includes features like RSVPs, event searching, and map visualization.
- Backend: Spring Boot REST API with JPA for database access
- Frontend: React application using Material-UI components
- Database: MySQL
- Java 17+ (JDK)
- Node.js 16+ and npm
- MySQL Server
- Create a MySQL database named
college_events - Update the database connection settings in
backend/src/main/resources/application.propertiesif needed - Run the SQL schema file to create tables:
backend/src/main/resources/schema.sql - (Optional) Load sample data:
backend/src/main/resources/data.sql
- Navigate to the backend directory:
cd backend - Build the application:
./mvnw clean package - Run the Spring Boot application:
./mvnw spring-boot:run - The backend API will be available at
http://localhost:8080/api
- Navigate to the frontend directory:
cd frontend - Install dependencies:
npm install - Start the development server:
npm start - The frontend will be available at
http://localhost:3000
- Registration & Login: Secure user authentication
- Role-based Authorization:
- Students: Regular user permissions
- Admin: Create/manage events, approve events
- SuperAdmin: University-wide administrative capabilities
- University creation and management
- Create, join, and manage Registered Student Organizations (RSOs)
- RSO admin capabilities
- Create Events: Create events with details (title, description, date/time, location)
- Event Types:
- Public Events: Visible to everyone, require admin approval
- Private Events: University-specific events, visible to university members
- RSO Events: Only visible to RSO members
- Event Approval: Admin approval workflow for public events
-
Event Search & Filtering
- Search by keyword in name or description
- Filter by date range
- Filter by university
- Filter by event type (public, private, RSO)
- Location-based search with distance radius
-
RSVP System
- Indicate attendance status (attending, maybe, not attending)
- View attendee list
- Track event popularity
- Record and display RSVP timestamps
-
Interactive Map
- View events on a map
- Get directions to events
- Visualize event distribution by location
- Click event markers for quick information
-
Enhanced Event Details
- Rating system for events
- Comments and reviews
- Attendance tracking
- Social media sharing
POST /api/users/create: Register new userPOST /api/users/validate: User loginGET /api/users/{userId}: Get user profilePUT /api/users/{userId}: Update user profile
GET /api/universities/all: Get all universitiesGET /api/universities/{universityId}: Get university detailsPOST /api/universities: Create new university
GET /api/rsos: Get all RSOsGET /api/rsos/{rsoId}: Get RSO detailsGET /api/rsos/university/{universityId}: Get university RSOsGET /api/rsos/user/{userId}: Get user's RSOsPOST /api/rsos/create: Create new RSOPOST /api/rsos/{rsoId}/join: Join an RSO
GET /api/events/all: Get all eventsGET /api/events/{userId}: Get user's eventsGET /api/events/public/{userId}: Get public events for userGET /api/events/private/{userId}: Get private events for userGET /api/events/rso/{rsoId}: Get RSO eventsGET /api/events/university/{universityId}: Get university eventsGET /api/events/event/{eventId}: Get specific event detailsPOST /api/events/create: Create new eventPOST /api/events/approve: Approve public eventGET /api/events/search: Search events with filters
GET /api/rsvps/event/{eventId}: Get RSVPs for an eventGET /api/rsvps/user/{userId}: Get user's RSVPsGET /api/rsvps/status/{userId}/{eventId}: Get user's RSVP status for an eventPOST /api/rsvps/create: Create new RSVPPUT /api/rsvps/update: Update RSVP status
GET /api/events/{eventId}/comments: Get comments for an eventPOST /api/events/{eventId}/comments: Add comment to an event
Use these credentials for testing:
- SuperAdmin:
admin@college.edu/admin123 - Admin:
admin@ucf.edu/admin123 - Student:
student@knights.ucf.edu/student123
- If you encounter CORS issues, ensure your backend CORS settings are configured correctly
- Database connection issues can typically be resolved by checking MySQL settings
- For frontend development issues, check browser console for errors