Eventura is a straightforward, user-friendly events hub for organising and booking activities.
Users can sign up, sign in, explore upcoming events, and secure tickets in just a few steps.
Admins have a dedicated interface to create, edit, and manage events, including the ability to add detailed venue information.
The project is built with Vite + TypeScript + SCSS/Bootstrap on the frontend and Spring Boot + MySQL on the backend, ensuring a modern, scalable, and maintainable codebase.
- Quick sign-up with personal details and address, stored securely
- Simple sign-in using only your email
- Browse an up-to-date list of upcoming events
- Book tickets instantly with a minimal number of clicks
- View all your booked events in one dedicated section
- Create events with complete details (name, description, organiser, venue address, capacity, cost, and schedule)
- Update any aspect of an event, from its description to its dates
- Delete events that are outdated or no longer relevant
- Optionally link events to newly created venue addresses
Frontend
- Vite, TypeScript for fast builds and type safety
- SCSS + Bootstrap 5 for a responsive and customisable UI
- Fetch API for communication with the backend
Backend
- Spring Boot 3.x (Java 17+)
- MySQL for persistent data storage
- Spring Data JPA / Hibernate for streamlined database interactions
- User submits address details to
POST /api/addresses - User account is created with
POST /api/users, linking to the address ID - The frontend stores the returned user ID for session management
- User enters email, which is verified via
GET /api/users/by-email?email=... - The returned user ID is stored for identifying bookings and permissions
- Events are loaded with
GET /api/events - User selects an event and books tickets with
POST /api/bookings - Bookings are displayed using
GET /api/bookings/user/{userId}
- Create:
POST /api/eventswith all event data - Edit:
PUT /api/events/{id}to update existing events - Delete:
DELETE /api/events/{id}to remove events from the system
Base URL (local)
- Frontend:
http://localhost:5173 - Backend:
http://localhost:8080
- Create:
POST /api/users - Retrieve by ID:
GET /api/users/{id} - Retrieve by Email:
GET /api/users/by-email?email=...
- Create:
POST /api/addresses - Retrieve by ID:
GET /api/addresses/{id}
- List all:
GET /api/events - Retrieve single:
GET /api/events/{id} - Create:
POST /api/events - Update:
PUT /api/events/{id} - Delete:
DELETE /api/events/{id}
- Create:
POST /api/bookings - Retrieve by user:
GET /api/bookings/user/{userId}
Requirements
- Node 18+
- Java 17+
- Maven 3.9+
- MySQL 8.x
Create a MySQL database named eventura
Update application.properties with your database username and password
Start the server: mvn spring-boot:run
- Install dependencies: npm install
- Create a .env file containing VITE_API_BASE_URL=http://localhost:8080
- Start the development server: npm run dev
- Reduce repeated code and improve adherence to DRY principles
- Add images for each event, using placeholder images when not available
- Implement unit tests for both frontend and backend components
- Add secure payment integration for ticket purchases
- Enable user profile editing
- Introduce password-based authentication for enhanced security
- Improve project file structure, naming conventions, and styling consistency
Credits
Created by Alex, James, and Purbai.