How fyberov-dev/restaurant-booking-system-backend works
This is a Spring Boot restaurant-reservation backend. Customers can fetch restaurant hours and available time slots, filter/rate tables by booking time, party size, and table type, then reserve a suitable table; restaurant operators can manage floor-plan tables. The main runtime path is HTTP controller → service → repository/database. The README also documents Swagger API documentation. Source excerpts show booking validation and rating logic; wiring for security and other unsampled areas is not inferred.
Main entry points: BookingService.java Booking validation · TableService.java Floor table management · RestaurantService.java Hours and slots · RatingService.java Table matching
Components 19
HTTP API
- Booking API
src/main/java/ee/nimens/restaurant/booking/system/backend/controller/BookingController.java - Table API
src/main/java/ee/nimens/restaurant/booking/system/backend/controller/TableController.java - Rating API
src/main/java/ee/nimens/restaurant/booking/system/backend/controller/RatingController.java - Restaurant API
src/main/java/ee/nimens/restaurant/booking/system/backend/controller/RestaurantController.java
Reservation Domain
- Booking validation
src/main/java/ee/nimens/restaurant/booking/system/backend/service/BookingService.java - Floor table management
src/main/java/ee/nimens/restaurant/booking/system/backend/service/TableService.java - Table matching
src/main/java/ee/nimens/restaurant/booking/system/backend/service/RatingService.java - Hours and slots
src/main/java/ee/nimens/restaurant/booking/system/backend/service/RestaurantService.java
Persistence
- Booking queries
src/main/java/ee/nimens/restaurant/booking/system/backend/repository/BookingRepository.java - Table records
src/main/java/ee/nimens/restaurant/booking/system/backend/repository/TableRepository.java - Restaurant records
src/main/java/ee/nimens/restaurant/booking/system/backend/repository/RestaurantRepository.java - PostgreSQL
src/main/resources/db/migration
API Support
- Booking mapping
src/main/java/ee/nimens/restaurant/booking/system/backend/util/mapper/BookingMapper.java - Table mapping
src/main/java/ee/nimens/restaurant/booking/system/backend/util/mapper/TableMapper.java - Restaurant mapping
src/main/java/ee/nimens/restaurant/booking/system/backend/util/mapper/RestaurantMapper.java - Date utilities
src/main/java/ee/nimens/restaurant/booking/system/backend/util/DateUtil.java - Error responses
src/main/java/ee/nimens/restaurant/booking/system/backend/exception/GlobalExceptionHandler.java - Swagger API docs
src/main/java/ee/nimens/restaurant/booking/system/backend/config/docs/SwaggerConfig.java
Other components
- Customer / operator
Connections 24
- Customer / operator → Booking API: submits reservation
- Customer / operator → Table API: manages tables
- Customer / operator → Rating API: filters tables
- Customer / operator → Restaurant API: requests hours
- Booking API → Booking validation: creates booking
- Table API → Floor table management: manages tables
- Rating API → Table matching: requests matches
- Restaurant API → Hours and slots: requests slots
- Booking validation → Date utilities: formats times
- Booking validation → Floor table management: checks table
- Booking validation → Booking queries: checks conflicts
- Booking validation → Booking queries: saves booking
- Booking validation → Booking mapping: maps booking
- Table matching → Booking validation: reads bookings
- Table matching → Floor table management: reads tables
- Floor table management → Table records: reads and writes
- Floor table management → Table mapping: maps tables
- Hours and slots → Restaurant records: reads restaurant
- Hours and slots → Date utilities: builds slot times
- Hours and slots → Restaurant mapping: maps response
- Booking queries → PostgreSQL: queries bookings
- Table records → PostgreSQL: queries tables
- Restaurant records → PostgreSQL: queries restaurant
- Swagger API docs → Customer / operator: serves API docs