[ project / 07 ] · Full-Stack System
ServEasy.
A complete restaurant operation system, from opening the table to closing the bill.
in action
The interface

click image to expand fullscreen
about the project
ServEasy is my final project for the Technical Degree in Software Development at SENAC: a full-stack web system for restaurant operations covering the entire cycle from opening a table to closing the bill. Three distinct panels, each scoped to a specific role in the operation: Admin, Cozinheiro and Atendente.
The backend is Java 17 with Spring Boot 3, following a strict Controller → Service → Repository separation with DTOs for all input and output. Authentication is stateless via JWT (HS512) with a custom filter in the Spring Security chain. Three roles (ADMIN, COZINHEIRO, CLIENTE_ATENDENTE) are enforced per-method with @PreAuthorize. Domain exceptions map cleanly to HTTP status codes through a GlobalExceptionHandler, and cross-cutting logging is handled by a Spring AOP aspect rather than scattered log calls across the codebase.
The Admin panel has a real-time dashboard showing daily orders, total revenue, average ticket, average rating and cancellations, plus full menu CRUD across six categories, inventory management with minimum stock alerts and per-item ingredient linkage, and table status control (AVAILABLE / OCCUPIED / RESERVED / MAINTENANCE). The kitchen panel shows the live order queue with a NOVO → EM_ANDAMENTO → PRONTO flow. The server panel handles table assignment, order entry and delivery tracking.
Closing a table generates a Sale record automatically, consolidating all delivered orders for that session. The full ingredient chain is modeled in JPA: Order → OrderItem → MenuItem → MenuItemIngredient → StockItem, so stock movements are tied to what was actually sold. There is also a public feedback system with 1-5 star ratings, no login required. The whole stack runs with Docker Compose using a depends_on health check, so the application only starts after MySQL is confirmed healthy.
project.meta
- type
- Full-Stack System
- stack
- Java · Spring Boot · MySQL · Spring Security · Docker · Thymeleaf
- source
- repo
what it does
Key features
Three role-based panels
Admin, Cozinheiro and Atendente panels each built for that role's actual workflow, enforced by method-level @PreAuthorize — no route leakage between roles.
Full order lifecycle
NOVO → EM_ANDAMENTO → PRONTO → ENTREGUE, then account close with an automatic Sale record consolidating every delivered order from the session.
Real-time admin dashboard
Live visibility on daily orders, revenue, average ticket, customer ratings and cancellations. Inventory alerts fire when any item drops below minimum stock.
42 REST endpoints, Swagger-documented
Full API surface organized across Auth, Menu, Orders, Tables, Stock and Feedback groups, browseable at /swagger-ui/index.html.
Production-style infrastructure
Multi-stage Dockerfile, Docker Compose with MySQL health check dependency, separate profiles for dev/docker/prod, and @Transactional(readOnly = true) on all reads.