# manuelord21/carrito-compras-go architecture

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

- Interactive diagram: https://gitdiagram.com/manuelord21/carrito-compras-go
- Repository: https://github.com/manuelord21/carrito-compras-go

## Overview

Carrito-Compras-GO is a Go web shopping-cart application backed by MySQL. A shopper browses products, adds items to a cart, changes or removes quantities, submits the cart as an order, and views order history. The Go HTTP server routes requests to handlers, which query or update the database and render the corresponding templates. The README identifies Go and MySQL; template details and some UI wiring are inferred only where supported by the sampled handlers and file tree.

Main entry points: [`main.go`](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go) (HTTP server and routes), [`pagina/header.html`](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/header.html) (Shared templates), [`pagina/footer.html`](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/footer.html) (Footer template), [`public`](https://github.com/manuelord21/carrito-compras-go/tree/master/public) (Static assets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_server["HTTP server and routes<br/>[main.go]"]
  node_assets["Static assets"]
  node_catalog_page["Catalog template<br/>[index.html]"]
  node_cart_page["Cart template<br/>[lista.html]"]
  node_orders_page["Orders template<br/>[pedidos.html]"]
  node_shared_templates["Shared templates<br/>[header.html]"]
  node_footer["Footer template<br/>[footer.html]"]
end

subgraph group_shopping["Shopping workflow"]
  node_catalog_handler["Browse products<br/>[main.go]"]
  node_add_handler["Add to cart<br/>[main.go]"]
  node_cart_handler["View cart<br/>[main.go]"]
  node_quantity_handlers["Change quantities<br/>[main.go]"]
  node_remove_handler["Remove item<br/>[main.go]"]
  node_checkout_handler["Submit order<br/>[main.go]"]
end

subgraph group_orders["Order history"]
  node_history_handler["View orders<br/>[main.go]"]
end

subgraph group_persistence["Persistence"]
  node_database_connection["Database connection<br/>[main.go]"]
  node_mysql[("MySQL database")]
end

node_shopper(("Shopper"))

node_shopper -->|"HTTP requests"| node_server
node_server -->|"routes requests"| node_catalog_handler
node_server -->|"routes requests"| node_add_handler
node_server -->|"routes requests"| node_cart_handler
node_server -->|"routes requests"| node_quantity_handlers
node_server -->|"routes requests"| node_remove_handler
node_server -->|"routes requests"| node_checkout_handler
node_server -->|"routes requests"| node_history_handler
node_server -->|"serves files"| node_assets
node_catalog_handler -->|"opens connection"| node_database_connection
node_add_handler -->|"opens connection"| node_database_connection
node_cart_handler -->|"opens connection"| node_database_connection
node_quantity_handlers -->|"opens connection"| node_database_connection
node_remove_handler -->|"opens connection"| node_database_connection
node_checkout_handler -->|"opens connection"| node_database_connection
node_history_handler -->|"opens connection"| node_database_connection
node_database_connection -->|"connects to"| node_mysql
node_catalog_handler -->|"reads products"| node_mysql
node_catalog_handler -->|"renders"| node_catalog_page
node_add_handler -->|"inserts cart items"| node_mysql
node_cart_handler -->|"reads cart totals"| node_mysql
node_cart_handler -->|"renders"| node_cart_page
node_quantity_handlers -->|"updates quantities"| node_mysql
node_remove_handler -->|"deletes cart item"| node_mysql
node_checkout_handler -->|"stores order and clears cart"| node_mysql
node_history_handler -->|"reads orders"| node_mysql
node_history_handler -->|"renders"| node_orders_page
node_catalog_handler -.->|"parses with pages"| node_shared_templates
node_cart_handler -.->|"parses with pages"| node_shared_templates
node_history_handler -.->|"parses with pages"| node_shared_templates
node_catalog_handler -.->|"parses with pages"| node_footer
node_cart_handler -.->|"parses with pages"| node_footer
node_history_handler -.->|"parses with pages"| node_footer

click node_server "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_assets "https://github.com/manuelord21/carrito-compras-go/tree/master/public"
click node_catalog_page "https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/index.html"
click node_cart_page "https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/lista.html"
click node_orders_page "https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/pedidos.html"
click node_shared_templates "https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/header.html"
click node_footer "https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/footer.html"
click node_catalog_handler "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_add_handler "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_cart_handler "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_quantity_handlers "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_remove_handler "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_checkout_handler "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_history_handler "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"
click node_database_connection "https://github.com/manuelord21/carrito-compras-go/blob/master/main.go"

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_server,node_assets,node_catalog_page,node_cart_page,node_orders_page,node_shared_templates,node_footer toneBlue
class node_catalog_handler,node_add_handler,node_cart_handler,node_quantity_handlers,node_remove_handler,node_checkout_handler toneAmber
class node_history_handler toneMint
class node_database_connection,node_mysql toneRose
class node_shopper toneIndigo
```

## Components

### Web interface

- [HTTP server and routes](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- [Static assets](https://github.com/manuelord21/carrito-compras-go/tree/master/public): `public`
- [Catalog template](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/index.html): `pagina/index.html`
- [Cart template](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/lista.html): `pagina/lista.html`
- [Orders template](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/pedidos.html): `pagina/pedidos.html`
- [Shared templates](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/header.html): `pagina/header.html`
- [Footer template](https://github.com/manuelord21/carrito-compras-go/blob/master/pagina/footer.html): `pagina/footer.html`

### Shopping workflow

- [Browse products](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- [Add to cart](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- [View cart](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- [Change quantities](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- [Remove item](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- [Submit order](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`

### Order history

- [View orders](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`

### Persistence

- [Database connection](https://github.com/manuelord21/carrito-compras-go/blob/master/main.go): `main.go`
- **MySQL database**

### Other components

- **Shopper**

## Connections

- Shopper → HTTP server and routes: HTTP requests
- HTTP server and routes → Browse products: routes requests
- HTTP server and routes → Add to cart: routes requests
- HTTP server and routes → View cart: routes requests
- HTTP server and routes → Change quantities: routes requests
- HTTP server and routes → Remove item: routes requests
- HTTP server and routes → Submit order: routes requests
- HTTP server and routes → View orders: routes requests
- HTTP server and routes → Static assets: serves files
- Browse products → Database connection: opens connection
- Add to cart → Database connection: opens connection
- View cart → Database connection: opens connection
- Change quantities → Database connection: opens connection
- Remove item → Database connection: opens connection
- Submit order → Database connection: opens connection
- View orders → Database connection: opens connection
- Database connection → MySQL database: connects to
- Browse products → MySQL database: reads products
- Browse products → Catalog template: renders
- Add to cart → MySQL database: inserts cart items
- View cart → MySQL database: reads cart totals
- View cart → Cart template: renders
- Change quantities → MySQL database: updates quantities
- Remove item → MySQL database: deletes cart item
- Submit order → MySQL database: stores order and clears cart
- View orders → MySQL database: reads orders
- View orders → Orders template: renders
- Browse products → Shared templates: parses with pages
- View cart → Shared templates: parses with pages
- View orders → Shared templates: parses with pages
- Browse products → Footer template: parses with pages
- View cart → Footer template: parses with pages
- View orders → Footer template: parses with pages
