https://github.com/Dance-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: 3 months ago
JSON representation
- 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-06-22T13:20:11.000Z (4 months ago)
- Last Synced: 2025-06-22T14:29:19.961Z (4 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: 687 KB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 15
-
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/Kamann-web/graphs/contributors)## βοΈ Tech Stack
Click to expand full stack
### Core


### Architecture

### DB + Migration

### Security & Access



### Docs & DevOps


---
## π Features
Click to view role-specific features
### π‘οΈ Owner
- Manage user accounts (create, update, deactivate, assign roles)
- Configure studio settings (business hours, cancellation policy, contact info)
- Manage rooms (create, deactivate, assign to sessions)
- Define membership card types (entry limits, expiration rules)
- View schedule of all sessions and generate attendance reports
- Override or delete sessions (even if booked)### π§Ύ Receptionist
- View todayβs session list with instructor, room, and number of bookings
- Assign or change rooms for upcoming sessions (if available)
- Cancel sessions according to policy
- Verify client membership card validity at check-in
- Search for clients and manage their reservations on request
- Mark a session as βin progressβ when it starts### πΊ Instructor
- Create class sessions with title, type, date, time, duration, and hall assigned
- Edit upcoming sessions (start time, capacity, room)
- Cancel own sessions if no clients are registered
- View personal teaching schedule### π Client
- Browse upcoming sessions with filters (instructor, type, date)
- Reserve a session if a valid membership card is held
- Cancel reservations before the allowed deadline
- Receive booking confirmations and expiration alerts
- View full history of past and upcoming reservations---
## π 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 databasewhich 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/Kamann-web](https://github.com/Dance-reservation-system/Kamann-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.