https://github.com/dance-reservation-system/reservation-system
π Reservation System
https://github.com/dance-reservation-system/reservation-system
docker-compose hibernate java-21 jwt open-source postgres railway-app release-automation spring-boot-3 spring-security
Last synced: about 1 month ago
JSON representation
π Reservation System
- Host: GitHub
- URL: https://github.com/dance-reservation-system/reservation-system
- Owner: Dance-reservation-system
- License: mit
- Created: 2025-05-23T20:54:50.000Z (5 months ago)
- Default Branch: develop
- Last Pushed: 2025-07-26T13:42:51.000Z (3 months ago)
- Last Synced: 2025-07-26T18:37:17.302Z (3 months ago)
- Topics: docker-compose, hibernate, java-21, jwt, open-source, postgres, railway-app, release-automation, spring-boot-3, spring-security
- Language: Java
- Homepage:
- Size: 733 KB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π Reservation System - Backend
A modern reservation system **engineered with Domain-Driven Design (DDD) and Clean Architecture** powered by **Java 21** and **Spring Boot 3**, featuring RBAC + ABAC, membership management, class scheduling, and many more.
[](https://github.com/Dance-reservation-system/Reservation-system/commits)
[](https://github.com/Dance-reservation-system/Reservation-system/issues)
[](https://github.com/Dance-reservation-system/Reservation-system/pulls)
[](https://github.com/Dance-reservation-system/Reservation-system/graphs/contributors)
[](https://github.com/Dance-reservation-system/reservation-system-web/graphs/contributors)
[](https://sonarcloud.io/summary/new_code?id=Dance-reservation-system_Kamann-modular)
[](https://sonarcloud.io/summary/new_code?id=Dance-reservation-system_Kamann-modular)
[](https://sonarcloud.io/summary/new_code?id=Dance-reservation-system_Kamann-modular)
## βοΈ Tech Stack
Click to expand full stack
### Core



### Architecture


### DB + Migration


### Security & Access




### Docs & DevOps



---
## π Features by Role
Click to expand detailed feature list per system role
---
### π‘οΈ Owner
- Create and manage system users (Instructor, Receptionist, Client) using Keycloak ID
- Assign and modify user roles within domain constraints
- Configure global studio settings:
- Business hours
- Cancellation policy
- Studio contact information
- Manage studio halls:
- Create and update rooms
- Set capacity
- Deactivate rooms for maintenance
- Define membership card types
- Set rules for entry limits and expiration policies
- Override or delete class sessions
- Generate reports on attendance and instructor activity
---
### π§Ύ Receptionist
- View todayβs full session list with instructors, rooms, and booking stats
- Check in clients at the front desk (manual attendance logging)
- Cancel client reservations before session start (according to policy)
- Verify membership validity at check-in (via membership module)
- Search for clients and view reservation details
- Mark sessions as "in progress" when the instructor arrives
- Assist clients with on-site reservation management
---
### πΊ Instructor
- Create class sessions (title, type, room, capacity, time range)
- Modify own upcoming sessions (if no clients are registered)
- Cancel sessions that havenβt started
- View teaching schedule (past and upcoming)
- Assign available halls for their own sessions
---
### π Client
- Browse available sessions by date, instructor, or class type
- Reserve sessions (only with valid membership card)
- Cancel reservations before cancellation window closes
- Receive confirmation and alerts for booking and membership status
- View full history of past and future reservations
- Track active membership card (expiration, entries left)
---
### π Project Structure
This project follows a **Modular Monolith** architecture based on **DDD Bounded Contexts**.
Each module encapsulates a specific business capability and exposes only its application layer.
| Module | Description |
|------------------|-------------|
| `useraccess` | Manages system users, roles, and identity integration via Keycloak |
| `client` | Handles client identity, reservation rights, and membership access |
| `instructor` | Contains instructor details and teaching-related data |
| `owner` | Studio administrator: manages rooms, membership types, and policies |
| `event` | Manages class sessions and occurrences (acts as the scheduling domain) |
| `reservation` | Encapsulates the reservation lifecycle and constraints |
| `attendance` | Tracks client attendance per session occurrence |
| `membership` | Issues and manages membership cards with entry limits and expiration |
| `payment` | Handles payments for reservations, including lifecycle and events |
| `reception` | Records receptionist actions (e.g. manual check-ins, cancellations) |
## π Installation
### 1. Clone Repository and Change into the project directory
```bash
git clone https://github.com/Dance-reservation-system/Reservation-system.git
cd Reservation-system
```
### See detailed environment setup instructions:
See [Keycloak Setup Guide](./docs/keycloak/manual-client-secret-setup.md)
### See contribution guidelines:
See [Contribution Guide](./docs/contribution-en.md)
### 2. Create the .env file out of .env-example
```bash
mv .env-example .env
```
### 3. Containers Setup (App + PostgreSQL 16)
The containers contains:
- java application
- postgresql database
which means there is no need to setup anything more
```bash
docker compose up -d --build
```
## π API Documentation
Access interactive Swagger UI at:
**http://localhost:8080/swagger-ui.html**
#### Registration Endpoint:
**POST /api/v1/auth/register-customer** (requires confirm email)
**POST /api/v1/auth/register-instructor** (requires admin confirmation)
Request Body (using RegisterRequest):
```json
{
"email": "customer@example.com",
"password": "password",
"firstName": "John",
"lastName": "Doe",
"phone": 123456789
}
```
#### Authorization:
Use JWT token from
**POST /api/v1/auth/login**
Request Body:
```json
{
"email": "customer@example.com",
"password": "password"
}
```
### π¦ CI/CD Pipeline
- Integration testing with H2 in-memory database (GithubActions Workflow)
- Production deploys via Railway (Dedicated release branch)
- Production secrets managed through GitHub Secrets + Railway Secrets
### π₯οΈ Frontend
Client available at:
**[https://github.com/Dance-reservation-system/reservation-system-web](https://github.com/Dance-reservation-system/reservation-system-web)**
### π Ideas
π« Membership expiration reminders
π Schedule conflict detection
π PDF report generation
π§ SMTP integration for notifications
π Prometheus/Grafana monitoring
π Query performance optimization
### π License
This project is licensed under the MIT License.