A comprehensive system for managing and booking sports facilities. This application streamlines operations for sports complexes, managing schedules, reservations, staff, and billing, while providing tailored interfaces for Administrators, Receptionists, and Customers.
Built with a modern architecture using Spring Boot 3 for the backend and Angular 18 for the frontend.
- Field Discovery: Visual catalog of available facilities with filtering and details.
- Online Booking: Intuitive flow to select dates, times, and confirm reservations.
- Personal Management: "My Reservations" dashboard to view history and status.
- Profile: Manage personal information and account security.
- Analytics Dashboard: Real-time statistics (Today's bookings, Revenue, New Users, Occupancy rates).
- Infrastructure Management: Full CRUD for sports fields (create, edit, pricing, images).
- Staff Management: Manage users and assign roles (promote to Receptionist).
- Full Control: Global access to all reservations, schedules, and billing.
- Daily Operations: Quick view of availability and today's schedule.
- Booking Management: Create on-site reservations, handle cancellations, and validate attendance.
- Receipts: Issue and download payment receipts (PDF) for customers.
- Schedules: Check availability per field.
- Language: Java 17
- Framework: Spring Boot 3.5.4
- Security: Spring Security 6 + JWT (JSON Web Tokens)
- Database: MySQL (with Spring Data JPA)
- Utilities:
- Apache PDFBox: For dynamic PDF receipt generation.
- Lombok: Boilerplate code reduction.
- Maven: Dependency management.
- Framework: Angular 18 (Standalone Components)
- Styling & UI:
- TailwindCSS 4: Modern and responsive utility-first styling.
- PrimeNG 18: Rich UI components (Tables, Charts, Modals).
- Architecture:
- Guards: Role-based route protection (
roleGuard). - Interceptors: Automatic JWT token handling in HTTP requests.
- Services: Reactive business logic using RxJS.
- Guards: Role-based route protection (
The repository is organized as a monorepo with two main directories:
/
βββ backend/ # Java/Spring Boot source code
β βββ src/main/java/reservaCanchasDeportivas/rcd/
β β βββ controller/ # REST Endpoints
β β βββ model/ # JPA Entities
β β βββ service/ # Business Logic
β β βββ security/ # JWT Configuration
β β βββ ...
β βββ pom.xml # Maven Dependencies
β
βββ frontend/ # Angular source code
βββ src/app/
β βββ pages/ # Views (Admin, User, Public, Auth)
β βββ services/ # API Communication
β βββ models/ # TypeScript Interfaces
β βββ guards/ # Route Protection
βββ package.json # NPM Dependencies
- Java JDK 17 or higher.
- Node.js v18+ and NPM.
- MySQL Server running.
- Maven (optional, wrapper included).
- Navigate to the
backenddirectory. - Configure your database connection in
src/main/resources/application.properties. You can useapplication.properties-exampleas a guide:spring.application.name=rcd spring.datasource.url=jdbc:mysql://localhost:3306/your_db_name?createDatabaseIfNotExist=true spring.datasource.username=your_username spring.datasource.password=your_password spring.jpa.hibernate.ddl-auto=update
- Run the application:
The server will start at
./mvnw spring-boot:run
http://localhost:8080.
- Navigate to the
frontenddirectory. - Install dependencies:
npm install
- Start the development server:
ng serve
- Open your browser at
http://localhost:4200.
The system uses JWT-based authentication. Upon starting, ensure you have users with the following roles in your database to test all modules:
| Role | Description | Access |
|---|---|---|
| ADMIN | Owner/Administrator | Full access (/admin/...) |
| RECEPCIONISTA | Staff | Operational management (/recepcionista/...) |
| USER | Customer | Booking and profile (/user/...) |
Note: You can create an initial user by registering via the web interface and then manually updating their role in the database to
ADMINorRECEPCIONISTA.
This project is licensed under the MIT License.
Developed by Valentino Castro OlazΓ‘bal- 2026.