# lejoser40/zapateriaapi architecture

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

- Interactive diagram: https://gitdiagram.com/lejoser40/zapateriaapi
- Repository: https://github.com/lejoser40/zapateriaapi

## Overview

ZapateiraAPI is an Express backend for shoe-store operations. Its visible workflow accepts API requests, routes login and user management, manages inventory, creates invoices and invoice details, updates stock, records payment, and provides sales reports. Login also records audit events; accounting and audit are mounted as separate API areas. The README is empty and source excerpts are partial, so relationships for those unsampled areas are left unspecified.

Main entry points: [`app.js`](https://github.com/lejoser40/zapateriaapi/blob/main/app.js) (Express application), [`database.js`](https://github.com/lejoser40/zapateriaapi/blob/main/database.js) (MySQL pool), [`utils/loginsMI.js`](https://github.com/lejoser40/zapateriaapi/blob/main/utils/loginsMI.js) (Login logic), [`routes/logins.js`](https://github.com/lejoser40/zapateriaapi/blob/main/routes/logins.js) (Login routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API runtime"]
  node_app["Express application<br/>[app.js]"]
end

subgraph group_identity["Identity and users"]
  node_login_route["Login routes<br/>[logins.js]"]
  node_login_logic["Login logic<br/>[loginsMI.js]"]
  node_user_route["User routes<br/>[usuarios.js]"]
  node_user_logic["User management<br/>[usuariosMI.js]"]
  node_auth_middleware["Auth middleware<br/>[isAuthenticated.js]"]
end

subgraph group_sales["Inventory and sales"]
  node_inventory_route["Inventory routes<br/>[inventario.js]"]
  node_inventory_logic["Inventory logic<br/>[inventarioUtils.js]"]
  node_invoice_route["Invoice routes<br/>[facturacion.js]"]
  node_invoice_logic["Invoice and reports"]
end

subgraph group_records["Accounting and audit"]
  node_accounting_route["Accounting routes<br/>[contabilidad.js]"]
  node_audit_route["Audit routes<br/>[bitacora.js]"]
  node_audit_logic["Audit logging<br/>[bitacoraUtils.js]"]
  node_accounting_logic["Accounting logic"]
  node_accounting_posting["Accounting posting<br/>[contabilizacion.js]"]
end

subgraph group_storage["Persistence"]
  node_db_pool["MySQL pool<br/>[database.js]"]
end

node_client(("API client"))
node_mysql[("MySQL database")]

node_client -->|"sends requests"| node_app
node_app -->|"mounts /logins"| node_login_route
node_app -->|"mounts /usuarios"| node_user_route
node_app -->|"mounts /inventario"| node_inventory_route
node_app -->|"mounts /facturacion"| node_invoice_route
node_app -->|"mounts /contabilidad"| node_accounting_route
node_app -->|"mounts /bitacora"| node_audit_route
node_login_route -->|"calls login logic"| node_login_logic
node_login_route -->|"records logout"| node_audit_logic
node_login_logic -->|"looks up user"| node_user_logic
node_login_logic -->|"records login result"| node_audit_logic
node_user_route -->|"calls user operations"| node_user_logic
node_inventory_route -->|"calls inventory operations"| node_inventory_logic
node_invoice_route -->|"calls invoice operations"| node_invoice_logic
node_login_logic -->|"queries login records"| node_db_pool
node_user_logic -->|"queries user records"| node_db_pool
node_inventory_logic -->|"queries inventory"| node_db_pool
node_invoice_logic -->|"queries sales records"| node_db_pool
node_db_pool -->|"opens pool"| node_mysql

click node_app "https://github.com/lejoser40/zapateriaapi/blob/main/app.js"
click node_login_route "https://github.com/lejoser40/zapateriaapi/blob/main/routes/logins.js"
click node_login_logic "https://github.com/lejoser40/zapateriaapi/blob/main/utils/loginsMI.js"
click node_user_route "https://github.com/lejoser40/zapateriaapi/blob/main/routes/usuarios.js"
click node_user_logic "https://github.com/lejoser40/zapateriaapi/blob/main/utils/usuariosMI.js"
click node_auth_middleware "https://github.com/lejoser40/zapateriaapi/blob/main/middleware/isAuthenticated.js"
click node_inventory_route "https://github.com/lejoser40/zapateriaapi/blob/main/routes/inventario.js"
click node_inventory_logic "https://github.com/lejoser40/zapateriaapi/blob/main/utils/inventarioUtils.js"
click node_invoice_route "https://github.com/lejoser40/zapateriaapi/blob/main/routes/facturacion.js"
click node_invoice_logic "https://github.com/lejoser40/zapateriaapi/blob/main/utils/facturacionUtils.js"
click node_accounting_route "https://github.com/lejoser40/zapateriaapi/blob/main/routes/contabilidad.js"
click node_audit_route "https://github.com/lejoser40/zapateriaapi/blob/main/routes/bitacora.js"
click node_audit_logic "https://github.com/lejoser40/zapateriaapi/blob/main/utils/bitacoraUtils.js"
click node_accounting_logic "https://github.com/lejoser40/zapateriaapi/blob/main/utils/contabilidaUtils.js"
click node_accounting_posting "https://github.com/lejoser40/zapateriaapi/blob/main/utils/contabilizacion.js"
click node_db_pool "https://github.com/lejoser40/zapateriaapi/blob/main/database.js"

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_app,node_client toneBlue
class node_login_route,node_login_logic,node_user_route,node_user_logic,node_auth_middleware,node_mysql toneAmber
class node_inventory_route,node_inventory_logic,node_invoice_route,node_invoice_logic toneMint
class node_accounting_route,node_audit_route,node_audit_logic,node_accounting_logic,node_accounting_posting toneRose
class node_db_pool toneIndigo
```

## Components

### API runtime

- [Express application](https://github.com/lejoser40/zapateriaapi/blob/main/app.js): `app.js`

### Identity and users

- [Login routes](https://github.com/lejoser40/zapateriaapi/blob/main/routes/logins.js): `routes/logins.js`
- [Login logic](https://github.com/lejoser40/zapateriaapi/blob/main/utils/loginsMI.js): `utils/loginsMI.js`
- [User routes](https://github.com/lejoser40/zapateriaapi/blob/main/routes/usuarios.js): `routes/usuarios.js`
- [User management](https://github.com/lejoser40/zapateriaapi/blob/main/utils/usuariosMI.js): `utils/usuariosMI.js`
- [Auth middleware](https://github.com/lejoser40/zapateriaapi/blob/main/middleware/isAuthenticated.js): `middleware/isAuthenticated.js`

### Inventory and sales

- [Inventory routes](https://github.com/lejoser40/zapateriaapi/blob/main/routes/inventario.js): `routes/inventario.js`
- [Inventory logic](https://github.com/lejoser40/zapateriaapi/blob/main/utils/inventarioUtils.js): `utils/inventarioUtils.js`
- [Invoice routes](https://github.com/lejoser40/zapateriaapi/blob/main/routes/facturacion.js): `routes/facturacion.js`
- [Invoice and reports](https://github.com/lejoser40/zapateriaapi/blob/main/utils/facturacionUtils.js): `utils/facturacionUtils.js`

### Accounting and audit

- [Accounting routes](https://github.com/lejoser40/zapateriaapi/blob/main/routes/contabilidad.js): `routes/contabilidad.js`
- [Audit routes](https://github.com/lejoser40/zapateriaapi/blob/main/routes/bitacora.js): `routes/bitacora.js`
- [Audit logging](https://github.com/lejoser40/zapateriaapi/blob/main/utils/bitacoraUtils.js): `utils/bitacoraUtils.js`
- [Accounting logic](https://github.com/lejoser40/zapateriaapi/blob/main/utils/contabilidaUtils.js): `utils/contabilidaUtils.js`
- [Accounting posting](https://github.com/lejoser40/zapateriaapi/blob/main/utils/contabilizacion.js): `utils/contabilizacion.js`

### Persistence

- [MySQL pool](https://github.com/lejoser40/zapateriaapi/blob/main/database.js): `database.js`

### Other components

- **API client**
- **MySQL database**

## Connections

- API client → Express application: sends requests
- Express application → Login routes: mounts /logins
- Express application → User routes: mounts /usuarios
- Express application → Inventory routes: mounts /inventario
- Express application → Invoice routes: mounts /facturacion
- Express application → Accounting routes: mounts /contabilidad
- Express application → Audit routes: mounts /bitacora
- Login routes → Login logic: calls login logic
- Login routes → Audit logging: records logout
- Login logic → User management: looks up user
- Login logic → Audit logging: records login result
- User routes → User management: calls user operations
- Inventory routes → Inventory logic: calls inventory operations
- Invoice routes → Invoice and reports: calls invoice operations
- Login logic → MySQL pool: queries login records
- User management → MySQL pool: queries user records
- Inventory logic → MySQL pool: queries inventory
- Invoice and reports → MySQL pool: queries sales records
- MySQL pool → MySQL database: opens pool
