How venturacarlos1007/lamolienda works
Purpose and runtime
La Molienda is a server-rendered restaurant-management application covering users, tables, menu items, inventory, orders, invoices, and dashboard reporting. It is a Java Spring Boot application, launched through src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java, with Maven build metadata in pom.xml.
HTTP and UI entry points
Spring MVC controllers receive browser requests and return template views for each business area. Primary entry points are:
• Dashboard: src/main/java/com/lamolienda/lamolienda/controller/DashboardController.java
• Authentication: src/main/java/com/lamolienda/lamolienda/controller/LoginController.java
• Operational domains: src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java, src/main/java/com/lamolienda/lamolienda/controller/FacturaController.java, src/main/java/com/lamolienda/lamolienda/controller/InventarioController.java
• Administration: src/main/java/com/lamolienda/lamolienda/controller/UsuarioController.java, src/main/java/com/lamolienda/lamolienda/controller/MesaController.java, src/main/java/com/lamolienda/lamolienda/controller/PlatilloController.java
Views are Thymeleaf-style server templates under src/main/resources/templates/, with shared page composition in src/main/resources/templates/layout.html and src/main/resources/templates/fragments/.
Domain model and operational lifecycle
The core business lifecycle is table/menu selection → order creation → order lines → invoicing. Its persistent domain types are:
• Orders and lines: src/main/java/com/lamolienda/lamolienda/model/Pedido.java, src/main/java/com/lamolienda/lamolienda/model/DetallePedido.java
• Billing: src/main/java/com/lamolienda/lamolienda/model/Factura.java
• Restaurant resources: src/main/java/com/lamolienda/lamolienda/model/Mesa.java, src/main/java/com/lamolienda/lamolienda/model/Platillo.java
• Stock and users: src/main/java/com/lamolienda/lamolienda/model/Inventario.java, src/main/java/com/lamolienda/lamolienda/model/Usuario.java
PedidoService and FacturaService are the central boundary for coordinating order and billing rules.
Service and persistence boundary
Controllers delegate business operations to service classes rather than directly owning persistence behavior. Key services include src/main/java/com/lamolienda/lamolienda/service/PedidoService.java, src/main/java/com/lamolienda/lamolienda/service/FacturaService.java, and src/main/java/com/lamolienda/lamolienda/service/InventarioService.java.
Repositories represent the data-access boundary for each aggregate/domain record: src/main/java/com/lamolienda/lamolienda/repository/PedidoRepository.java, src/main/java/com/lamolienda/lamolienda/repository/FacturaRepository.java, and src/main/java/com/lamolienda/lamolienda/repository/DetallePedidoRepository.java. Database connection and Spring application settings are expected through src/main/resources/application.properties.
Authentication and request context
Security is configured centrally in src/main/java/com/lamolienda/lamolienda/security/SecurityConfig.java. User lookup for authentication is implemented by src/main/java/com/lamolienda/lamolienda/security/CustomUserDetailsService.java, backed by the user domain and src/main/java/com/lamolienda/lamolienda/repository/UsuarioRepository.java. src/main/java/com/lamolienda/lamolienda/config/GlobalRequestAttributes.java supplies cross-request attributes, likely supporting common layout/header behavior.
Presentation and static assets
Rendered screens map directly to operational workflows: orders (src/main/resources/templates/pedidos.html), invoices (src/main/resources/templates/facturas.html and detalle_factura.html), inventory (src/main/resources/templates/inventario_listado.html), and reporting (src/main/resources/templates/dashboard_graficas.html, resumen_facturacion.html). Static CSS and bundled invoice PDFs are served from src/main/resources/static/.
Infrastructure
The repository contains no separate frontend runtime, container orchestration, message broker, or external-service adapter. The material infrastructure is Spring Boot, Spring MVC/security/data layers implied by the package organization and pom.xml, a relational persistence backend configured through application.properties, Maven, and JavaScript package metadata in package.json.
Main entry points: PedidoController.java MVC controllers · PedidoService.java Order service · FacturaService.java Invoice service · LamoliendaApplication.java Spring Boot application
Components 17
Web & UI
- MVC controllers · Dashboard, login, operations, and administration request entry points.
src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java - Thymeleaf templates · Shared layout and workflow screens.
- Static assets & PDFs
- Global request attributes · Supplies common layout/header attributes.
src/main/java/com/lamolienda/lamolienda/config/GlobalRequestAttributes.java
Security
- Security configuration
src/main/java/com/lamolienda/lamolienda/security/SecurityConfig.java - User details lookup
src/main/java/com/lamolienda/lamolienda/security/CustomUserDetailsService.java
Business lifecycle
- Order service · Coordinates order creation and order-line rules.
src/main/java/com/lamolienda/lamolienda/service/PedidoService.java - Invoice service · Coordinates invoicing rules.
src/main/java/com/lamolienda/lamolienda/service/FacturaService.java - Inventory service
src/main/java/com/lamolienda/lamolienda/service/InventarioService.java - Restaurant domain · Mesa, Platillo, Inventario, and Usuario records.
src/main/java/com/lamolienda/lamolienda/model/Mesa.java - Orders & lines · Pedido and DetallePedido lifecycle records.
src/main/java/com/lamolienda/lamolienda/model/Pedido.java - Invoices
src/main/java/com/lamolienda/lamolienda/model/Factura.java
Persistence
- Order and invoice repositories · Persistence access for orders, lines, and invoices.
src/main/java/com/lamolienda/lamolienda/repository/PedidoRepository.java - User repository
src/main/java/com/lamolienda/lamolienda/repository/UsuarioRepository.java - Relational database · Connection and application settings are configured here.
src/main/resources/application.properties
Other components
- Spring Boot application · Application entry point.
src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java - Maven build
pom.xml
Connections 20
- Maven build → Spring Boot application: builds
- Spring Boot application → MVC controllers: starts MVC
- Spring Boot application → Security configuration: enables security
- MVC controllers → Thymeleaf templates: renders
- Thymeleaf templates → Static assets & PDFs: uses assets
- Global request attributes → Thymeleaf templates: adds shared context
- Security configuration → User details lookup: authenticates via
- User details lookup → User repository: loads users
- MVC controllers → Order service: manages orders
- MVC controllers → Invoice service: manages invoices
- MVC controllers → Inventory service: manages stock
- Order service → Restaurant domain: selects tables and menu
- Order service → Orders & lines: creates orders and lines
- Order service → Order and invoice repositories: persists
- Invoice service → Orders & lines: bills completed orders
- Invoice service → Invoices: creates
- Invoice service → Order and invoice repositories: persists
- Inventory service → Restaurant domain: updates stock
- Order and invoice repositories → Relational database: reads and writes
- User repository → Relational database: reads users