# franck147/ecomerce_nuevo architecture

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

- Interactive diagram: https://gitdiagram.com/franck147/ecomerce_nuevo
- Repository: https://github.com/franck147/ecomerce_nuevo

## Overview

El producto es una plataforma de ecommerce modular: usuarios gestionan productos y reglas de precios desde Next.js, que se conecta a una API REST en Go; los módulos de catálogo y precios implementan sus CRUD y usan PostgreSQL. El README documenta la arquitectura y los enlaces generales, pero no hay extractos de código; por ello las relaciones reflejan solo esos vínculos documentados, no llamadas internas no verificadas.

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_layout["Navegación"]
  node_products_page["CRUD productos"]
  node_pricing_page["CRUD precios"]
  node_api_client["Cliente API"]
end

subgraph group_transport["API REST"]
  node_router["Router HTTP"]
  node_product_handlers["Handlers productos"]
  node_pricing_handlers["Handlers precios"]
  node_backend_main["Orquestador monolito"]
end

subgraph group_domain["Dominio ecommerce"]
  node_catalog_service["Servicio catálogo"]
  node_composite["Composite catálogo"]
  node_pricing_service["Servicio precios"]
  node_decorators["Calculadores y decoradores"]
end

subgraph group_persistence["Persistencia"]
  node_singleton_db["Pool compartido"]
  node_config["Configuración"]
  node_migration_schema["Esquema y datos iniciales"]
  node_migration_embed["Migraciones embebidas"]
end

node_shopper(("Usuario"))
node_postgres[("PostgreSQL")]

node_shopper -->|"gestiona productos"| node_products_page
node_shopper -->|"gestiona precios"| node_pricing_page
node_layout -->|"ofrece navegación"| node_products_page
node_layout -->|"ofrece navegación"| node_pricing_page
node_products_page -->|"usa cliente"| node_api_client
node_pricing_page -->|"usa cliente"| node_api_client
node_api_client -->|"envía solicitudes"| node_router
node_router -->|"expone endpoints"| node_product_handlers
node_router -->|"expone endpoints"| node_pricing_handlers
node_product_handlers -->|"gestiona CRUD"| node_catalog_service
node_pricing_handlers -->|"gestiona CRUD"| node_pricing_service
node_catalog_service -->|"procesa productos"| node_composite
node_pricing_service -->|"calcula reglas"| node_decorators
node_catalog_service -->|"persiste SQL"| node_singleton_db
node_pricing_service -->|"persiste SQL"| node_singleton_db
node_singleton_db -->|"mantiene pool"| node_postgres
node_backend_main -->|"orquesta API"| node_router
node_migration_embed -->|"embebe migraciones"| node_migration_schema
node_migration_schema -->|"define esquema"| node_postgres

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_layout,node_products_page,node_pricing_page,node_api_client toneBlue
class node_router,node_product_handlers,node_pricing_handlers,node_backend_main,node_postgres toneAmber
class node_catalog_service,node_composite,node_pricing_service,node_decorators toneMint
class node_singleton_db,node_config,node_migration_schema,node_migration_embed toneRose
class node_shopper toneIndigo
```

## Components

### Frontend

- **Navegación**
- **CRUD productos**
- **CRUD precios**
- **Cliente API**

### API REST

- **Router HTTP**
- **Handlers productos**
- **Handlers precios**
- **Orquestador monolito**

### Dominio ecommerce

- **Servicio catálogo**
- **Composite catálogo**
- **Servicio precios**
- **Calculadores y decoradores**

### Persistencia

- **Pool compartido**
- **Configuración**
- **Esquema y datos iniciales**
- **Migraciones embebidas**

### Other components

- **Usuario**
- **PostgreSQL**

## Connections

- Usuario → CRUD productos: gestiona productos (evidence: `README.md`)
- Usuario → CRUD precios: gestiona precios (evidence: `README.md`)
- Navegación → CRUD productos: ofrece navegación (evidence: `README.md`)
- Navegación → CRUD precios: ofrece navegación (evidence: `README.md`)
- CRUD productos → Cliente API: usa cliente (evidence: `README.md`)
- CRUD precios → Cliente API: usa cliente (evidence: `README.md`)
- Cliente API → Router HTTP: envía solicitudes (evidence: `README.md`)
- Router HTTP → Handlers productos: expone endpoints (evidence: `README.md`)
- Router HTTP → Handlers precios: expone endpoints (evidence: `README.md`)
- Handlers productos → Servicio catálogo: gestiona CRUD (evidence: `README.md`)
- Handlers precios → Servicio precios: gestiona CRUD (evidence: `README.md`)
- Servicio catálogo → Composite catálogo: procesa productos (evidence: `README.md`)
- Servicio precios → Calculadores y decoradores: calcula reglas (evidence: `README.md`)
- Servicio catálogo → Pool compartido: persiste SQL (evidence: `README.md`)
- Servicio precios → Pool compartido: persiste SQL (evidence: `README.md`)
- Pool compartido → PostgreSQL: mantiene pool (evidence: `README.md`)
- Orquestador monolito → Router HTTP: orquesta API (evidence: `README.md`)
- Migraciones embebidas → Esquema y datos iniciales: embebe migraciones (evidence: `README.md`)
- Esquema y datos iniciales → PostgreSQL: define esquema (evidence: `README.md`)
