# misael-jk/pizzaria-tp architecture

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

- Interactive diagram: https://gitdiagram.com/misael-jk/pizzaria-tp
- Repository: https://github.com/misael-jk/pizzaria-tp

## Overview

#### Purpose and entry point
This is a .NET pizzeria backend organized as a layered solution: HTTP API, business services, domain model/contracts, and persistence. The runtime entry point is `src/Pizzeria/API/Program.cs`; the solution root is `src/Pizzeria/Pizzeria.sln`.

#### HTTP API boundary
Minimal/API endpoint modules expose operations for customers, pizzas, and orders. They accept request DTOs and delegate to services rather than accessing repositories directly.
- `src/Pizzeria/API/Endpoints/ClienteEndpoints.cs`
- `src/Pizzeria/API/Endpoints/PizzaEndpoints.cs`
- `src/Pizzeria/API/Endpoints/PedidoEndpoints.cs`
- `src/Pizzeria/API/DTO/CearPedidoDto.cs`
- `src/Pizzeria/API/DTO/DetalleDto.cs`

#### Domain model
The domain layer defines the central business records: customers, pizza catalog entries, orders, and order-line details. Order lifecycle state is represented separately by an enum.
- `src/Pizzeria/Dominio/Entidades/Cliente.cs`
- `src/Pizzeria/Dominio/Entidades/Pizza.cs`
- `src/Pizzeria/Dominio/Entidades/Pedido.cs`
- `src/Pizzeria/Dominio/Entidades/DetallePedido.cs`
- `src/Pizzeria/Dominio/Enums/EstadoPedido.cs`

#### Service/application layer
Services implement use-case orchestration between API-facing operations and repository contracts. The order service is the key transaction/business-flow boundary: it likely coordinates customer lookup, pizza/detail handling, order creation, and state handling.
- `src/Pizzeria/Servicios/Service/ClienteService.cs`
- `src/Pizzeria/Servicios/Service/PizzaService.cs`
- `src/Pizzeria/Servicios/Service/PedidoService.cs`
- `src/Pizzeria/Servicios/Interface/IPedidoService.cs`

#### Persistence abstraction and implementations
The domain owns repository interfaces, keeping storage concerns outside the domain. Persistence supplies concrete repositories, with `RepoBase` providing shared database access behavior.
- `src/Pizzeria/Dominio/Interfaces/IClienteRepository.cs`
- `src/Pizzeria/Dominio/Interfaces/IPizzaRepository.cs`
- `src/Pizzeria/Dominio/Interfaces/IPedidoRepository.cs`
- `src/Pizzeria/Persistencia/RepoBase.cs`
- `src/Pizzeria/Persistencia/Repos/PedidoRepository.cs`

#### Primary flow and boundaries
A request flows from an endpoint to its service interface/implementation, then through a domain repository interface to a persistence repository and database. Results return through the same layers. DTOs form the HTTP input boundary; domain entities form the core business/storage model; repository interfaces form the dependency-inversion boundary between services/domain and persistence.

#### Database and infrastructure
Database structure and seed/sample data are maintained as SQL artifacts, external to the .NET projects:
- `DataBase/schema.sql`
- `DataBase/inserts.sql`

The API has development runtime configuration in `src/Pizzeria/API/appsettings.Development.json` and launch profiles in `src/Pizzeria/API/Properties/launchSettings.json`. No frontend, message broker, or external third-party service integration is evident from the repository tree.

Main entry points: [`src/Pizzeria/Dominio/Interfaces/IPedidoRepository.cs`](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Interfaces/IPedidoRepository.cs) (Repository Contracts), [`src/Pizzeria/API/Program.cs`](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Program.cs) (API Host), [`src/Pizzeria/Servicios/Service/PedidoService.cs`](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/PedidoService.cs) (Order Service), [`src/Pizzeria/Persistencia/Repos/PedidoRepository.cs`](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Persistencia/Repos/PedidoRepository.cs) (Order Repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_program{{"API Host<br/>ASP.NET entry point<br/>[Program.cs]"}}
  node_customer_endpoints["Customer Endpoints<br/>endpoint module"]
  node_pizza_endpoints["Pizza Endpoints<br/>endpoint module<br/>[PizzaEndpoints.cs]"]
  node_order_endpoints["Order Endpoints<br/>endpoint module<br/>[PedidoEndpoints.cs]"]
  node_order_dtos["Order Request DTOs<br/>HTTP DTOs<br/>[CearPedidoDto.cs]"]
end

subgraph group_services["Application Services"]
  node_customer_service["Customer Service<br/>application service<br/>[ClienteService.cs]"]
  node_pizza_service["Pizza Service<br/>application service<br/>[PizzaService.cs]"]
  node_order_service_contract["Order Service Contract<br/>service interface<br/>[IPedidoService.cs]"]
  node_order_service["Order Service<br/>application service<br/>[PedidoService.cs]"]
end

subgraph group_domain["Domain"]
  node_domain_entities["Core Entities<br/>domain entities<br/>[Pedido.cs]"]
  node_order_state["Order State<br/>domain enum<br/>[EstadoPedido.cs]"]
  node_repository_contracts["Repository Contracts<br/>domain interfaces"]
end

subgraph group_persistence["Persistence"]
  node_repo_base["Repository Base<br/>persistence base<br/>[RepoBase.cs]"]
  node_order_repository["Order Repository<br/>repository implementation"]
end

subgraph group_database["Database"]
  node_sql_schema[("SQL Schema<br/>database schema<br/>[schema.sql]")]
  node_seed_data["Sample Data<br/>SQL seed data<br/>[inserts.sql]"]
end

node_program -->|"hosts"| node_customer_endpoints
node_program -->|"hosts"| node_pizza_endpoints
node_program -->|"hosts"| node_order_endpoints
node_order_dtos -->|"request input"| node_order_endpoints
node_customer_endpoints -->|"delegates"| node_customer_service
node_pizza_endpoints -->|"delegates"| node_pizza_service
node_order_endpoints -->|"delegates"| node_order_service_contract
node_order_service -.->|"implements"| node_order_service_contract
node_customer_service -->|"uses"| node_repository_contracts
node_pizza_service -->|"uses"| node_repository_contracts
node_order_service -->|"uses"| node_repository_contracts
node_order_service -->|"orchestrates"| node_domain_entities
node_domain_entities -->|"uses"| node_order_state
node_order_repository -.->|"implements"| node_repository_contracts
node_order_repository -->|"extends"| node_repo_base
node_order_repository -->|"persists to"| node_sql_schema
node_seed_data -->|"populates"| node_sql_schema

click node_program "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Program.cs"
click node_customer_endpoints "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Endpoints/ClienteEndpoints.cs"
click node_pizza_endpoints "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Endpoints/PizzaEndpoints.cs"
click node_order_endpoints "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Endpoints/PedidoEndpoints.cs"
click node_order_dtos "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/DTO/CearPedidoDto.cs"
click node_customer_service "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/ClienteService.cs"
click node_pizza_service "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/PizzaService.cs"
click node_order_service_contract "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Interface/IPedidoService.cs"
click node_order_service "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/PedidoService.cs"
click node_domain_entities "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Entidades/Pedido.cs"
click node_order_state "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Enums/EstadoPedido.cs"
click node_repository_contracts "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Interfaces/IPedidoRepository.cs"
click node_repo_base "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Persistencia/RepoBase.cs"
click node_order_repository "https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Persistencia/Repos/PedidoRepository.cs"
click node_sql_schema "https://github.com/misael-jk/pizzaria-tp/blob/main/DataBase/schema.sql"
click node_seed_data "https://github.com/misael-jk/pizzaria-tp/blob/main/DataBase/inserts.sql"

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_program,node_customer_endpoints,node_pizza_endpoints,node_order_endpoints,node_order_dtos toneBlue
class node_customer_service,node_pizza_service,node_order_service_contract,node_order_service toneAmber
class node_domain_entities,node_order_state,node_repository_contracts toneMint
class node_repo_base,node_order_repository toneRose
class node_sql_schema,node_seed_data toneIndigo
```

## Components

### HTTP API

- [API Host](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Program.cs): ASP.NET entry point · Configures the HTTP runtime and dependencies. · `src/Pizzeria/API/Program.cs`
- [Customer Endpoints](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Endpoints/ClienteEndpoints.cs): endpoint module · `src/Pizzeria/API/Endpoints/ClienteEndpoints.cs`
- [Pizza Endpoints](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Endpoints/PizzaEndpoints.cs): endpoint module · `src/Pizzeria/API/Endpoints/PizzaEndpoints.cs`
- [Order Endpoints](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/Endpoints/PedidoEndpoints.cs): endpoint module · `src/Pizzeria/API/Endpoints/PedidoEndpoints.cs`
- [Order Request DTOs](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/API/DTO/CearPedidoDto.cs): HTTP DTOs · Order creation and line-detail input models. · `src/Pizzeria/API/DTO/CearPedidoDto.cs`

### Application Services

- [Customer Service](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/ClienteService.cs): application service · `src/Pizzeria/Servicios/Service/ClienteService.cs`
- [Pizza Service](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/PizzaService.cs): application service · `src/Pizzeria/Servicios/Service/PizzaService.cs`
- [Order Service Contract](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Interface/IPedidoService.cs): service interface · `src/Pizzeria/Servicios/Interface/IPedidoService.cs`
- [Order Service](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Servicios/Service/PedidoService.cs): application service · Coordinates order creation, customer lookup, pizzas, details, and lifecycle state. · `src/Pizzeria/Servicios/Service/PedidoService.cs`

### Domain

- [Core Entities](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Entidades/Pedido.cs): domain entities · Customers, pizzas, orders, and order details. · `src/Pizzeria/Dominio/Entidades/Pedido.cs`
- [Order State](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Enums/EstadoPedido.cs): domain enum · `src/Pizzeria/Dominio/Enums/EstadoPedido.cs`
- [Repository Contracts](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Dominio/Interfaces/IPedidoRepository.cs): domain interfaces · Storage abstraction owned by the domain. · `src/Pizzeria/Dominio/Interfaces/IPedidoRepository.cs`

### Persistence

- [Repository Base](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Persistencia/RepoBase.cs): persistence base · Provides shared database-access behavior. · `src/Pizzeria/Persistencia/RepoBase.cs`
- [Order Repository](https://github.com/misael-jk/pizzaria-tp/blob/main/src/Pizzeria/Persistencia/Repos/PedidoRepository.cs): repository implementation · `src/Pizzeria/Persistencia/Repos/PedidoRepository.cs`

### Database

- [SQL Schema](https://github.com/misael-jk/pizzaria-tp/blob/main/DataBase/schema.sql): database schema · `DataBase/schema.sql`
- [Sample Data](https://github.com/misael-jk/pizzaria-tp/blob/main/DataBase/inserts.sql): SQL seed data · `DataBase/inserts.sql`

## Connections

- API Host → Customer Endpoints: hosts
- API Host → Pizza Endpoints: hosts
- API Host → Order Endpoints: hosts
- Order Request DTOs → Order Endpoints: request input
- Customer Endpoints → Customer Service: delegates
- Pizza Endpoints → Pizza Service: delegates
- Order Endpoints → Order Service Contract: delegates
- Order Service → Order Service Contract: implements
- Customer Service → Repository Contracts: uses
- Pizza Service → Repository Contracts: uses
- Order Service → Repository Contracts: uses
- Order Service → Core Entities: orchestrates
- Core Entities → Order State: uses
- Order Repository → Repository Contracts: implements
- Order Repository → Repository Base: extends
- Order Repository → SQL Schema: persists to
- Sample Data → SQL Schema: populates
