https://github.com/Dance-reservation-system/Kamann
Booking system
https://github.com/Dance-reservation-system/Kamann
backend hibernate java21 postgresql springboot springsecurity-jwt
Last synced: 8 months ago
JSON representation
Booking system
- Host: GitHub
- URL: https://github.com/Dance-reservation-system/Kamann
- Owner: F1iper
- Created: 2024-11-14T10:22:04.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-01-24T22:51:13.000Z (over 1 year ago)
- Last Synced: 2025-01-25T06:42:10.582Z (over 1 year ago)
- Topics: backend, hibernate, java21, postgresql, springboot, springsecurity-jwt
- Language: Java
- Homepage:
- Size: 433 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 💃 Dance Studio Reservation System - Backend
A modern reservation system built with **Java 21** and **Spring Boot 3**, featuring role-based access control, membership management, and class scheduling.






## 🌟 Features
### 🛡️ Admin
- Full class lifecycle management
- User administration with activation/deactivation
- Financial reporting (weekly/monthly/yearly)
- Attendance analytics dashboard
### 🕺 Instructor
- Personal schedule management
- Real-time attendance tracking
- Membership validation system
- Class cancellation notifications
### 💃 Client
- Class booking system with membership integration
- Membership usage tracking
- Advanced class search filters
## 🛠️ Technologies
- **Core**: Java 21 • Spring Boot 3
- **Database**: PostgreSQL 16
- **Security**: JWT Authentication
- **API Docs**: Swagger/OpenAPI 3.0
- **CI/CD**: GitHub Actions
## 🚀 Installation
### 1. Clone Repository and change into the project directory
```bash
git clone https://github.com/F1iper/kamann.git
cd kamann/backend
```
### 2. Create the .env file out of .env-example
```bash
mv .env-example .env
```
### 3. Database Setup (PostgreSQL 16)
Run these commands in your database (contanerized or not)
```sql
CREATE DATABASE kamann;
```
### 4. Configure the database
```properties
# POSTGRESQL CONFIGURATION
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/kamann
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
# JWT CONFIGURATION
JWT_SECRET=daf66e01593f61a15b857cf433aae03a005812b31234e149036bcc8dee755dbb
JWT_EXPIRATION_TIME=86400000 #default to 24h
```
### 5. Run Application (with PROD profile)
```bash
./mvn spring-boot:run -Dspring-boot.run.profiles=PROD
```
## 📚 API Documentation
Access interactive Swagger UI at:
**http://localhost:8080/swagger-ui.html**
#### Registration Endpoint:
**POST /api/auth/register**
Request Body (using RegisterRequest):
```json
{
"email": "user@example.com",
"password": "password123",
"firstName": "John",
"lastName": "Doe",
"role": "CLIENT"
}
```
#### Authorization:
Use JWT token from
**POST /api/auth/login**
Request Body:
```json
{
"email": "user@example.com",
"password": "password123"
}
```
### 🚦 CI/CD Pipeline
Automated builds and tests via GitHub Actions
Integration testing with Testcontainers
Production secrets managed through GitHub Secrets
### 🖥️ Frontend
Client available at:
**[https://github.com/Osinek280/kamann](https://github.com/Osinek280/kamann)** (in progress)
### 📝 Roadmap
#### Core Improvements
🎫 Membership expiration reminders
🕒 Schedule conflict detection
📊 PDF report generation
#### Infrastructure
📧 SMTP integration for notifications
📈 Prometheus/Grafana monitoring
🔍 Query performance optimization
### 📜 License
This project is licensed under the MIT License.