# wvkarlozrxn/spa architecture

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

- Interactive diagram: https://gitdiagram.com/wvkarlozrxn/spa
- Repository: https://github.com/wvkarlozrxn/spa

## Overview

Spa Milu is a spa and salon operations data model, with documented capabilities spanning people and staff, appointments and services, billing and payments, and purchasing and stock. The sampled runtime code is primarily Entity Framework entities plus a SQL Server DbContext; the tree shows only a small console entry point, and the excerpts do not establish an implemented user-facing workflow. Entity links below reflect declared model relationships, not evidence of automated business processing. The README documents the broader reservation-to-billing and purchasing-to-stock workflows, whose orchestration is not shown in the sampled source.

Main entry points: [`Lib_Spa/entidades/Reservas.cs`](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Reservas.cs) (Reservations), [`Lib_Spa/entidades/Empleados.cs`](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Empleados.cs) (Employees), [`Lib_Spa/entidades/Facturas.cs`](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Facturas.cs) (Invoices), [`Lib_Spa/entidades/Empleados_Turnos.cs`](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Empleados_Turnos.cs) (Staff shifts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_people["People and staffing"]
  node_personas["People<br/>[Personas.cs]"]
  node_clientes["Clients<br/>[Clientes.cs]"]
  node_empleados["Employees<br/>[Empleados.cs]"]
  node_cargos["Job roles<br/>[Cargos.cs]"]
  node_turnos["Work shifts<br/>[Turnos.cs]"]
  node_empleados_turnos["Staff shifts"]
end

subgraph group_appointments["Appointments and services"]
  node_reservas["Reservations<br/>[Reservas.cs]"]
  node_detalle_reservas["Reservation details"]
  node_servicios["Services<br/>[Servicios.cs]"]
end

subgraph group_commerce["Sales and payments"]
  node_facturas["Invoices<br/>[Facturas.cs]"]
  node_detalle_facturas["Invoice details"]
  node_pagos["Payments<br/>[Pagos.cs]"]
  node_metodos_pagos["Payment methods<br/>[Metodos_Pagos.cs]"]
  node_proveedores["Suppliers<br/>[Proveedores.cs]"]
  node_compras["Purchases<br/>[Compras.cs]"]
  node_detalle_compras["Purchase details<br/>[Detalle_Compras.cs]"]
  node_productos["Products<br/>[Productos.cs]"]
  node_inventarios["Inventory<br/>[Inventarios.cs]"]
end

subgraph group_persistence["Data access"]
  node_iconexion["Connection contract<br/>[IConexion.cs]"]
  node_conexion["SQL Server context<br/>[Conexion.cs]"]
  node_datosgenerales["Connection settings<br/>[Datosgenerales.cs]"]
end

node_sqlserver[("SQL Server")]

node_clientes -->|"references"| node_personas
node_empleados -->|"references"| node_personas
node_empleados -->|"references"| node_cargos
node_empleados_turnos -->|"assigns"| node_empleados
node_empleados_turnos -->|"assigns"| node_turnos
node_reservas -->|"assigned staff"| node_empleados
node_reservas -->|"booked by"| node_clientes
node_reservas -->|"has invoices"| node_facturas
node_reservas -->|"has details"| node_detalle_reservas
node_detalle_reservas -->|"references"| node_servicios
node_facturas -->|"has details"| node_detalle_facturas
node_detalle_facturas -->|"references"| node_servicios
node_facturas -->|"has payments"| node_pagos
node_compras -->|"references"| node_proveedores
node_compras -->|"has details"| node_detalle_compras
node_detalle_compras -->|"references"| node_productos
node_productos -->|"references"| node_inventarios
node_conexion -->|"implements"| node_iconexion
node_conexion -->|"configures provider"| node_sqlserver

click node_personas "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Personas.cs"
click node_clientes "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Clientes.cs"
click node_empleados "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Empleados.cs"
click node_cargos "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Cargos.cs"
click node_turnos "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Turnos.cs"
click node_empleados_turnos "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Empleados_Turnos.cs"
click node_reservas "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Reservas.cs"
click node_detalle_reservas "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Detalle_Reservas.cs"
click node_servicios "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Servicios.cs"
click node_facturas "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Facturas.cs"
click node_detalle_facturas "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Detalle_Facturas.cs"
click node_pagos "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Pagos.cs"
click node_metodos_pagos "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Metodos_Pagos.cs"
click node_proveedores "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Proveedores.cs"
click node_compras "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Compras.cs"
click node_detalle_compras "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Detalle_Compras.cs"
click node_productos "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Productos.cs"
click node_inventarios "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Inventarios.cs"
click node_iconexion "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/interfaces/IConexion.cs"
click node_conexion "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/implementaciones/Conexion.cs"
click node_datosgenerales "https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/nucleo/Datosgenerales.cs"

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_personas,node_clientes,node_empleados,node_cargos,node_turnos,node_empleados_turnos toneBlue
class node_reservas,node_detalle_reservas,node_servicios,node_sqlserver toneAmber
class node_facturas,node_detalle_facturas,node_pagos,node_metodos_pagos,node_proveedores,node_compras,node_detalle_compras,node_productos,node_inventarios toneMint
class node_iconexion,node_conexion,node_datosgenerales toneRose
```

## Components

### People and staffing

- [People](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Personas.cs): `Lib_Spa/entidades/Personas.cs`
- [Clients](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Clientes.cs): `Lib_Spa/entidades/Clientes.cs`
- [Employees](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Empleados.cs): `Lib_Spa/entidades/Empleados.cs`
- [Job roles](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Cargos.cs): `Lib_Spa/entidades/Cargos.cs`
- [Work shifts](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Turnos.cs): `Lib_Spa/entidades/Turnos.cs`
- [Staff shifts](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Empleados_Turnos.cs): `Lib_Spa/entidades/Empleados_Turnos.cs`

### Appointments and services

- [Reservations](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Reservas.cs): `Lib_Spa/entidades/Reservas.cs`
- [Reservation details](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Detalle_Reservas.cs): `Lib_Spa/entidades/Detalle_Reservas.cs`
- [Services](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Servicios.cs): `Lib_Spa/entidades/Servicios.cs`

### Sales and payments

- [Invoices](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Facturas.cs): `Lib_Spa/entidades/Facturas.cs`
- [Invoice details](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Detalle_Facturas.cs): `Lib_Spa/entidades/Detalle_Facturas.cs`
- [Payments](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Pagos.cs): `Lib_Spa/entidades/Pagos.cs`
- [Payment methods](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Metodos_Pagos.cs): `Lib_Spa/entidades/Metodos_Pagos.cs`
- [Suppliers](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Proveedores.cs): `Lib_Spa/entidades/Proveedores.cs`
- [Purchases](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Compras.cs): `Lib_Spa/entidades/Compras.cs`
- [Purchase details](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Detalle_Compras.cs): `Lib_Spa/entidades/Detalle_Compras.cs`
- [Products](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Productos.cs): `Lib_Spa/entidades/Productos.cs`
- [Inventory](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/entidades/Inventarios.cs): `Lib_Spa/entidades/Inventarios.cs`

### Data access

- [Connection contract](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/interfaces/IConexion.cs): `Lib_Spa/interfaces/IConexion.cs`
- [SQL Server context](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/implementaciones/Conexion.cs): `Lib_Spa/implementaciones/Conexion.cs`
- [Connection settings](https://github.com/wvkarlozrxn/spa/blob/main/Lib_Spa/nucleo/Datosgenerales.cs): `Lib_Spa/nucleo/Datosgenerales.cs`

### Other components

- **SQL Server**

## Connections

- Clients → People: references (evidence: `Lib_Spa/entidades/Clientes.cs`)
- Employees → People: references (evidence: `Lib_Spa/entidades/Empleados.cs`)
- Employees → Job roles: references (evidence: `Lib_Spa/entidades/Empleados.cs`)
- Staff shifts → Employees: assigns (evidence: `Lib_Spa/entidades/Empleados_Turnos.cs`)
- Staff shifts → Work shifts: assigns (evidence: `Lib_Spa/entidades/Empleados_Turnos.cs`)
- Reservations → Employees: assigned staff (evidence: `Lib_Spa/entidades/Reservas.cs`)
- Reservations → Clients: booked by (evidence: `Lib_Spa/entidades/Reservas.cs`)
- Reservations → Invoices: has invoices (evidence: `Lib_Spa/entidades/Reservas.cs`)
- Reservations → Reservation details: has details (evidence: `Lib_Spa/entidades/Reservas.cs`)
- Reservation details → Services: references (evidence: `Lib_Spa/entidades/Detalle_Reservas.cs`)
- Invoices → Invoice details: has details (evidence: `Lib_Spa/entidades/Detalle_Facturas.cs`)
- Invoice details → Services: references (evidence: `Lib_Spa/entidades/Detalle_Facturas.cs`)
- Invoices → Payments: has payments (evidence: `Lib_Spa/entidades/Facturas.cs`)
- Purchases → Suppliers: references (evidence: `Lib_Spa/entidades/Compras.cs`)
- Purchases → Purchase details: has details (evidence: `Lib_Spa/entidades/Compras.cs`)
- Purchase details → Products: references (evidence: `Lib_Spa/entidades/Detalle_Compras.cs`)
- Products → Inventory: references (evidence: `Lib_Spa/entidades/Productos.cs`)
- SQL Server context → Connection contract: implements (evidence: `Lib_Spa/implementaciones/Conexion.cs`)
- SQL Server context → SQL Server: configures provider (evidence: `Lib_Spa/implementaciones/Conexion.cs`)
