# joseluisbasulto/arquitecturas-layers architecture

> Architecture diagram of the GitHub repository joseluisbasulto/arquitecturas-layers, 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/joseluisbasulto/arquitecturas-layers
- Repository: https://github.com/joseluisbasulto/arquitecturas-layers

## Overview

This is a console-based order management application. A user selects register, search, or list from the menu; order entry collects customer and product details, and the service validates and calculates totals before saving. Search and listing also go through the service and repository. The main internal layers are presentation, business logic, domain models, and persistence. The sampled source shows an in-memory repository; no README or additional documented capabilities were provided.

Main entry points: [`src/business/OrderService.java`](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/business/OrderService.java) (Order service), [`src/presentation/OrderUI.java`](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/presentation/OrderUI.java) (Order interaction), [`src/presentation/MenuUI.java`](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/presentation/MenuUI.java) (Console menu), [`src/Main.java`](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/Main.java) (Application startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Presentation"]
  node_menu["Console menu<br/>[MenuUI.java]"]
  node_orderui["Order interaction<br/>[OrderUI.java]"]
end

subgraph group_business["Business logic"]
  node_service["Order service<br/>[OrderService.java]"]
end

subgraph group_domain["Order domain"]
  node_order["Order<br/>[Order.java]"]
  node_product["Product<br/>[Product.java]"]
  node_state["Order state<br/>[OrderState.java]"]
end

subgraph group_persistence["Persistence"]
  node_repository["Repository contract"]
  node_memory[("In-memory repository")]
end

node_user(("User"))
node_main["Application startup<br/>[Main.java]"]

node_user -->|"selects options"| node_menu
node_menu -->|"displays results"| node_user
node_main -->|"instantiates"| node_memory
node_main -->|"constructs"| node_service
node_main -->|"starts"| node_menu
node_menu -->|"dispatches actions"| node_orderui
node_orderui -->|"creates orders"| node_order
node_orderui -->|"creates products"| node_product
node_orderui -->|"registers orders"| node_service
node_orderui -->|"searches and lists"| node_service
node_service -->|"validates and calculates"| node_order
node_service -->|"checks quantities"| node_product
node_service -->|"sets processed state"| node_state
node_service -->|"saves and queries"| node_repository
node_memory -->|"implements"| node_repository
node_memory -->|"stores orders"| node_order

click node_main "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/Main.java"
click node_menu "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/presentation/MenuUI.java"
click node_orderui "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/presentation/OrderUI.java"
click node_service "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/business/OrderService.java"
click node_order "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/model/Order.java"
click node_product "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/model/Product.java"
click node_state "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/model/OrderState.java"
click node_repository "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/data/OrderRepository.java"
click node_memory "https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/data/OrderRepositoryMemory.java"

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_menu,node_orderui,node_user toneBlue
class node_service toneAmber
class node_order,node_product,node_state toneMint
class node_repository,node_memory toneRose
class node_main toneTeal
```

## Components

### Presentation

- [Console menu](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/presentation/MenuUI.java): `src/presentation/MenuUI.java`
- [Order interaction](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/presentation/OrderUI.java): `src/presentation/OrderUI.java`

### Business logic

- [Order service](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/business/OrderService.java): `src/business/OrderService.java`

### Order domain

- [Order](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/model/Order.java): `src/model/Order.java`
- [Product](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/model/Product.java): `src/model/Product.java`
- [Order state](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/model/OrderState.java): `src/model/OrderState.java`

### Persistence

- [Repository contract](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/data/OrderRepository.java): `src/data/OrderRepository.java`
- [In-memory repository](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/data/OrderRepositoryMemory.java): `src/data/OrderRepositoryMemory.java`

### Other components

- **User**
- [Application startup](https://github.com/joseluisbasulto/arquitecturas-layers/blob/main/src/Main.java): `src/Main.java`

## Connections

- User → Console menu: selects options
- Console menu → User: displays results
- Application startup → In-memory repository: instantiates
- Application startup → Order service: constructs
- Application startup → Console menu: starts
- Console menu → Order interaction: dispatches actions
- Order interaction → Order: creates orders
- Order interaction → Product: creates products
- Order interaction → Order service: registers orders
- Order interaction → Order service: searches and lists
- Order service → Order: validates and calculates
- Order service → Product: checks quantities
- Order service → Order state: sets processed state
- Order service → Repository contract: saves and queries
- In-memory repository → Repository contract: implements
- In-memory repository → Order: stores orders
