How izayata/reference-spring-boot-api works
ImagineBar is a Spring Boot REST backend for restaurant and bar management. Clients use its API for authentication, registration, catalog browsing, customer/account operations, orders, and password resets. The documented architecture routes controller work through services to repositories and entities, with converters between persistence entities and API DTOs. Security adds session/CSRF controls and Redis-backed rate limits; documented event-driven side effects dispatch email for registration, orders, and password changes. Relationships reflect README statements; source excerpts were unavailable, so finer-grained calls and event wiring are not asserted.
Main entry points: service Business services · AuthController.java Authentication · repository Data repositories · converter DTO converters
Components 18
API workflows
- Authentication
src/main/java/bar/imagine/demo/controller/AuthController.java - Registration
src/main/java/bar/imagine/demo/controller/RegistrationController.java - Food catalog
src/main/java/bar/imagine/demo/controller/FoodController.java - Order handling
src/main/java/bar/imagine/demo/controller/OrderController.java - Customer accounts
src/main/java/bar/imagine/demo/controller/CustomerController.java - Password reset
src/main/java/bar/imagine/demo/controller/PasswordResetController.java
Domain and persistence
- Business services
src/main/java/bar/imagine/demo/service - DTO converters
src/main/java/bar/imagine/demo/converter - API DTOs
src/main/java/bar/imagine/demo/dto - Data repositories
src/main/java/bar/imagine/demo/repository - Domain entities
src/main/java/bar/imagine/demo/data
Security
- Session security
src/main/java/bar/imagine/demo/config/SecurityConfig.java - Login rate limit
src/main/java/bar/imagine/demo/config/LoginRateLimitFilter.java
External integrations
- PostgreSQL
- Redis
- Email dispatch
src/main/java/bar/imagine/demo/service/EmailService.java - Email outbox
src/main/java/bar/imagine/demo/service/EmailOutboxService.java
Other components
- API client
Connections 21
- API client → Authentication: uses REST
README.md - API client → Registration: uses REST
README.md - API client → Food catalog: uses REST
README.md - API client → Order handling: uses REST
README.md - API client → Customer accounts: uses REST
README.md - API client → Password reset: uses REST
README.md - Authentication → Business services: delegates to
README.md - Registration → Business services: delegates to
README.md - Food catalog → Business services: delegates to
README.md - Order handling → Business services: delegates to
README.md - Customer accounts → Business services: delegates to
README.md - Password reset → Business services: delegates to
README.md - Business services → Data repositories: uses
README.md - Data repositories → Domain entities: persists
README.md - DTO converters → Domain entities: converts
README.md - DTO converters → API DTOs: converts
README.md - Authentication → Session security: secured by
README.md - Login rate limit → Redis: rate limits with
README.md - Data repositories → PostgreSQL: persists to
README.md - Business services → Email outbox: queues email
- Email outbox → Email dispatch: dispatches