# venturacarlos1007/lamolienda architecture

> Architecture diagram of the GitHub repository venturacarlos1007/lamolienda, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/venturacarlos1007/lamolienda
- Repository: https://github.com/venturacarlos1007/lamolienda

## Overview

#### 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: [`src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java`](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java) (MVC controllers), [`src/main/java/com/lamolienda/lamolienda/service/PedidoService.java`](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/PedidoService.java) (Order service), [`src/main/java/com/lamolienda/lamolienda/service/FacturaService.java`](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/FacturaService.java) (Invoice service), [`src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java`](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java) (Spring Boot application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web &amp; UI"]
  node_controllers["MVC controllers<br/>Spring MVC"]
  node_templates["Thymeleaf templates<br/>server views"]
  node_static["Static assets &amp; PDFs<br/>static content"]
  node_request_attributes["Global request attributes<br/>MVC config"]
end

subgraph group_security["Security"]
  node_security_config["Security configuration<br/>Spring Security"]
  node_user_details["User details lookup<br/>authentication service"]
end

subgraph group_business["Business lifecycle"]
  node_pedido_service["Order service<br/>business service<br/>[PedidoService.java]"]
  node_factura_service["Invoice service<br/>business service"]
  node_inventory_service["Inventory service<br/>business service"]
  node_restaurant_domain["Restaurant domain<br/>JPA entities<br/>[Mesa.java]"]
  node_order_domain["Orders &amp; lines<br/>JPA entities<br/>[Pedido.java]"]
  node_invoice_domain["Invoices<br/>JPA entity<br/>[Factura.java]"]
end

subgraph group_data["Persistence"]
  node_repositories["Order and invoice repositories<br/>Spring Data repositories"]
  node_user_repository["User repository<br/>Spring Data repository"]
  node_database[("Relational database")]
end

node_app{{"Spring Boot application<br/>runtime"}}
node_maven["Maven build<br/>[pom.xml]"]

node_maven -->|"builds"| node_app
node_app -->|"starts MVC"| node_controllers
node_app -->|"enables security"| node_security_config
node_controllers -->|"renders"| node_templates
node_templates -->|"uses assets"| node_static
node_request_attributes -->|"adds shared context"| node_templates
node_security_config -->|"authenticates via"| node_user_details
node_user_details -->|"loads users"| node_user_repository
node_controllers -->|"manages orders"| node_pedido_service
node_controllers -->|"manages invoices"| node_factura_service
node_controllers -->|"manages stock"| node_inventory_service
node_pedido_service -->|"selects tables and menu"| node_restaurant_domain
node_pedido_service -->|"creates orders and lines"| node_order_domain
node_pedido_service -->|"persists"| node_repositories
node_factura_service -->|"bills completed orders"| node_order_domain
node_factura_service -->|"creates"| node_invoice_domain
node_factura_service -->|"persists"| node_repositories
node_inventory_service -->|"updates stock"| node_restaurant_domain
node_repositories -->|"reads and writes"| node_database
node_user_repository -->|"reads users"| node_database

click node_app "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java"
click node_maven "https://github.com/venturacarlos1007/lamolienda/blob/main/pom.xml"
click node_controllers "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java"
click node_request_attributes "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/config/GlobalRequestAttributes.java"
click node_security_config "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/security/SecurityConfig.java"
click node_user_details "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/security/CustomUserDetailsService.java"
click node_pedido_service "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/PedidoService.java"
click node_factura_service "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/FacturaService.java"
click node_inventory_service "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/InventarioService.java"
click node_restaurant_domain "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/model/Mesa.java"
click node_order_domain "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/model/Pedido.java"
click node_invoice_domain "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/model/Factura.java"
click node_repositories "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/repository/PedidoRepository.java"
click node_user_repository "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/repository/UsuarioRepository.java"
click node_database "https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/resources/application.properties"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_controllers,node_templates,node_static,node_request_attributes toneBlue
class node_security_config,node_user_details toneAmber
class node_pedido_service,node_factura_service,node_inventory_service,node_restaurant_domain,node_order_domain,node_invoice_domain toneMint
class node_repositories,node_user_repository,node_database toneRose
class node_app,node_maven toneNeutral
```

## Components

### Web & UI

- [MVC controllers](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java): Spring MVC · Dashboard, login, operations, and administration request entry points. · `src/main/java/com/lamolienda/lamolienda/controller/PedidoController.java`
- **Thymeleaf templates**: server views · Shared layout and workflow screens.
- **Static assets & PDFs**: static content
- [Global request attributes](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/config/GlobalRequestAttributes.java): MVC config · Supplies common layout/header attributes. · `src/main/java/com/lamolienda/lamolienda/config/GlobalRequestAttributes.java`

### Security

- [Security configuration](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/security/SecurityConfig.java): Spring Security · `src/main/java/com/lamolienda/lamolienda/security/SecurityConfig.java`
- [User details lookup](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/security/CustomUserDetailsService.java): authentication service · `src/main/java/com/lamolienda/lamolienda/security/CustomUserDetailsService.java`

### Business lifecycle

- [Order service](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/PedidoService.java): business service · Coordinates order creation and order-line rules. · `src/main/java/com/lamolienda/lamolienda/service/PedidoService.java`
- [Invoice service](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/FacturaService.java): business service · Coordinates invoicing rules. · `src/main/java/com/lamolienda/lamolienda/service/FacturaService.java`
- [Inventory service](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/service/InventarioService.java): business service · `src/main/java/com/lamolienda/lamolienda/service/InventarioService.java`
- [Restaurant domain](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/model/Mesa.java): JPA entities · Mesa, Platillo, Inventario, and Usuario records. · `src/main/java/com/lamolienda/lamolienda/model/Mesa.java`
- [Orders & lines](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/model/Pedido.java): JPA entities · Pedido and DetallePedido lifecycle records. · `src/main/java/com/lamolienda/lamolienda/model/Pedido.java`
- [Invoices](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/model/Factura.java): JPA entity · `src/main/java/com/lamolienda/lamolienda/model/Factura.java`

### Persistence

- [Order and invoice repositories](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/repository/PedidoRepository.java): Spring Data repositories · Persistence access for orders, lines, and invoices. · `src/main/java/com/lamolienda/lamolienda/repository/PedidoRepository.java`
- [User repository](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/repository/UsuarioRepository.java): Spring Data repository · `src/main/java/com/lamolienda/lamolienda/repository/UsuarioRepository.java`
- [Relational database](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/resources/application.properties): database · Connection and application settings are configured here. · `src/main/resources/application.properties`

### Other components

- [Spring Boot application](https://github.com/venturacarlos1007/lamolienda/blob/main/src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java): runtime · Application entry point. · `src/main/java/com/lamolienda/lamolienda/LamoliendaApplication.java`
- [Maven build](https://github.com/venturacarlos1007/lamolienda/blob/main/pom.xml): build · `pom.xml`

## Connections

- 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
