The backend for TablePlanner, a web application that lets restaurants manage their tables, guests, and reservations. This repository contains the REST API, the database layer, and the authentication logic.
URL: https://tableplanner-frontend.onrender.com (Test) Credentials: Test/12345678
The matching frontend lives in TablePlanner-Frontend.
Each restaurant has its own account and manages its own isolated set of data:
- Authentication — register a restaurant account and log in. All further requests are authorized via a JWT.
- Multi-tenancy — every restaurant only ever sees and edits its own tables, customers, and reservations. All data is fully isolated per account.
- Tables — full CRUD (create, read, update, delete) with a live updated availability status.
- Customers — full CRUD for the restaurant's guest database.
- Reservations — full CRUD, linking a customer and a table at a given date and time.
- Referential safety — deleting a table or customer that is still referenced
by a reservation is rejected with
409 Conflictinstead of corrupting data.
- Java 25 with Spring Boot
- Spring Web — REST controllers returning
ResponseEntity<T>with correct HTTP status codes (200GET/PUT,201POST,204DELETE) - Spring Data JPA / Hibernate — object-relational mapping of the entities
- Spring Security —
SecurityFilterChainbean, BCrypt password hashing, and a customJwtFilter(OncePerRequestFilter) that reads the current restaurant from the token - PostgreSQL in production, H2 (in-memory) for tests
- Lombok (
@Getter,@Setter,@Slf4j, …) - SLF4J logging on all create/update/delete operations
- Centralized error handling via
@RestControllerAdvice(GlobalExceptionHandler):404for not-found,409for integrity violations,500as fallback - Docker for deployment on Render
- Nando Patton
- Adam Tuffaha
