# caaaaa2562/pp3-api-catalogo architecture

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

- Interactive diagram: https://gitdiagram.com/caaaaa2562/pp3-api-catalogo
- Repository: https://github.com/caaaaa2562/pp3-api-catalogo

## Overview

This is a Node/Express catalog service backed by PostgreSQL. Clients browse active products and categories; administrators manage products and coupons; coupon lookup and purchase/return handling are also implemented in the application. The excerpts show route handlers querying PostgreSQL directly and authentication middleware used by the app. Some route bodies and integrations are unsampled, so the graph avoids inferring additional service-to-service connections.

Main entry points: [`src/app.js`](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js) (Route handlers), [`src/db.js`](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/db.js) (Pool factory), [`src/server.js`](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/server.js) (Service bootstrap), [`scripts/seed.js`](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/scripts/seed.js) (Catalog seed data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_app["Route handlers<br/>[app.js]"]
  node_auth["Request authentication<br/>[auth.js]"]
end

subgraph group_catalog["Catalog Management"]
  node_product_browse["Product browsing<br/>[app.js]"]
  node_product_admin["Product administration<br/>[app.js]"]
  node_categories["Category listing<br/>[app.js]"]
end

subgraph group_commerce["Coupons and Orders"]
  node_coupon_admin["Coupon administration<br/>[app.js]"]
  node_coupon_lookup["Coupon validation<br/>[app.js]"]
  node_order_inventory["Order and stock operations<br/>[app.js]"]
end

subgraph group_runtime["Runtime and Persistence"]
  node_server["Service bootstrap<br/>[server.js]"]
  node_db_pool["Pool factory<br/>[db.js]"]
  node_postgres[("PostgreSQL")]
  node_seed["Catalog seed data<br/>[seed.js]"]
end

node_clients(("API clients"))

node_clients -->|"sends requests"| node_app
node_server -->|"creates pool"| node_db_pool
node_server -->|"creates app"| node_app
node_app -->|"uses middleware"| node_auth
node_app -->|"routes requests"| node_product_browse
node_app -->|"routes requests"| node_product_admin
node_app -->|"routes requests"| node_categories
node_app -->|"routes requests"| node_coupon_admin
node_app -->|"routes requests"| node_coupon_lookup
node_app -->|"handles operations"| node_order_inventory
node_product_browse -->|"queries products"| node_postgres
node_product_admin -->|"writes products"| node_postgres
node_categories -->|"queries categories"| node_postgres
node_coupon_admin -->|"manages coupons"| node_postgres
node_coupon_lookup -->|"checks coupon"| node_postgres
node_order_inventory -->|"updates stock"| node_postgres
node_db_pool -->|"connects to"| node_postgres
node_seed -->|"creates pool"| node_db_pool
node_seed -->|"seeds records"| node_postgres

click node_server "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/server.js"
click node_app "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_auth "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/auth.js"
click node_product_browse "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_product_admin "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_categories "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_coupon_admin "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_coupon_lookup "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_order_inventory "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js"
click node_db_pool "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/db.js"
click node_seed "https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/scripts/seed.js"

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_app,node_auth,node_clients toneBlue
class node_product_browse,node_product_admin,node_categories toneAmber
class node_coupon_admin,node_coupon_lookup,node_order_inventory toneMint
class node_server,node_db_pool,node_postgres,node_seed toneRose
```

## Components

### HTTP API

- [Route handlers](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`
- [Request authentication](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/auth.js): `src/auth.js`

### Catalog Management

- [Product browsing](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`
- [Product administration](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`
- [Category listing](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`

### Coupons and Orders

- [Coupon administration](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`
- [Coupon validation](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`
- [Order and stock operations](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/app.js): `src/app.js`

### Runtime and Persistence

- [Service bootstrap](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/server.js): `src/server.js`
- [Pool factory](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/src/db.js): `src/db.js`
- **PostgreSQL**
- [Catalog seed data](https://github.com/caaaaa2562/pp3-api-catalogo/blob/main/scripts/seed.js): `scripts/seed.js`

### Other components

- **API clients**

## Connections

- API clients → Route handlers: sends requests (evidence: `src/app.js`)
- Service bootstrap → Pool factory: creates pool (evidence: `src/server.js`)
- Service bootstrap → Route handlers: creates app (evidence: `src/server.js`)
- Route handlers → Request authentication: uses middleware (evidence: `src/app.js`)
- Route handlers → Product browsing: routes requests (evidence: `src/app.js`)
- Route handlers → Product administration: routes requests (evidence: `src/app.js`)
- Route handlers → Category listing: routes requests (evidence: `src/app.js`)
- Route handlers → Coupon administration: routes requests (evidence: `src/app.js`)
- Route handlers → Coupon validation: routes requests (evidence: `src/app.js`)
- Route handlers → Order and stock operations: handles operations (evidence: `src/app.js`)
- Product browsing → PostgreSQL: queries products (evidence: `src/app.js`)
- Product administration → PostgreSQL: writes products (evidence: `src/app.js`)
- Category listing → PostgreSQL: queries categories (evidence: `src/app.js`)
- Coupon administration → PostgreSQL: manages coupons (evidence: `src/app.js`)
- Coupon validation → PostgreSQL: checks coupon (evidence: `src/app.js`)
- Order and stock operations → PostgreSQL: updates stock (evidence: `src/app.js`)
- Pool factory → PostgreSQL: connects to (evidence: `src/db.js`)
- Catalog seed data → Pool factory: creates pool (evidence: `scripts/seed.js`)
- Catalog seed data → PostgreSQL: seeds records (evidence: `scripts/seed.js`)
