# peregrinoe/inventarionext architecture

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

- Interactive diagram: https://gitdiagram.com/peregrinoe/inventarionext
- Repository: https://github.com/peregrinoe/inventarionext

## Overview

Inventario is a browser-based asset-management system: users sign in, manage people and equipment, record assignments and lifecycle events, then review dashboard statistics or export reports. The modular client uses Supabase for authentication and persistence; the repository also contains a separate Express API backed by PostgreSQL. The README documents the main inventory capabilities, while sampled source confirms selected client persistence and API behavior; links among unsampled modules are limited to documented responsibilities.

Main entry points: [`js/core/database.js`](https://github.com/peregrinoe/inventarionext/blob/main/js/core/database.js) (Data access), [`js/core/auth.js`](https://github.com/peregrinoe/inventarionext/blob/main/js/core/auth.js) (Client authentication), [`api/server.js`](https://github.com/peregrinoe/inventarionext/blob/main/api/server.js) (Express API), [`js/core/images.js`](https://github.com/peregrinoe/inventarionext/blob/main/js/core/images.js) (Image handling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Inventory workflows"]
  node_webapp["Inventory interface<br/>[index.html]"]
  node_people["Colaborators<br/>[colaboradores.js]"]
  node_equipment["Computer equipment<br/>[equipos.js]"]
  node_phones["Mobile phones<br/>[celulares.js]"]
  node_assignments["Asset assignments<br/>[asignaciones.js]"]
  node_licenses["Software licenses<br/>[licencias.js]"]
  node_accessories["Accessories<br/>[accesorios.js]"]
  node_offboarding["Asset offboarding<br/>[bajas.js]"]
  node_dashboard["Dashboard<br/>[dashboard.js]"]
  node_reports["Reports<br/>[reportes.js]"]
end

subgraph group_core["Client foundation"]
  node_images["Image handling<br/>[images.js]"]
  node_database["Data access<br/>[database.js]"]
end

subgraph group_identity["Authentication"]
  node_clientauth["Client authentication<br/>[auth.js]"]
end

subgraph group_api["API backend"]
  node_server["Express API<br/>[server.js]"]
  node_authmw["JWT authorization<br/>[auth.js]"]
  node_pool["PostgreSQL access<br/>[db.js]"]
end

subgraph group_storage["Data services"]
  node_postgres[("PostgreSQL database")]
end

node_user(("Inventory user"))
node_supabase[("Supabase")]
node_apiconsumer(("API client"))

node_user -->|"uses"| node_webapp
node_webapp -->|"signs in"| node_clientauth
node_clientauth -->|"authenticates"| node_supabase
node_clientauth -->|"loads data"| node_database
node_people -->|"reads/writes"| node_database
node_equipment -->|"reads/writes"| node_database
node_phones -->|"reads/writes"| node_database
node_assignments -->|"reads/writes"| node_database
node_licenses -->|"reads/writes"| node_database
node_accessories -->|"reads/writes"| node_database
node_offboarding -->|"reads/writes"| node_database
node_dashboard -->|"reads"| node_database
node_reports -->|"exports data"| node_database
node_people -->|"uses"| node_images
node_equipment -->|"uses"| node_images
node_phones -->|"uses"| node_images
node_database -->|"queries"| node_supabase
node_apiconsumer -->|"requests"| node_server
node_server -->|"checks access"| node_authmw
node_server -->|"queries"| node_pool
node_pool -->|"reads/writes"| node_postgres

click node_webapp "https://github.com/peregrinoe/inventarionext/blob/main/index.html"
click node_people "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/colaboradores.js"
click node_equipment "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/equipos.js"
click node_phones "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/celulares.js"
click node_assignments "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/asignaciones.js"
click node_licenses "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/licencias.js"
click node_accessories "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/accesorios.js"
click node_offboarding "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/bajas.js"
click node_dashboard "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/dashboard.js"
click node_reports "https://github.com/peregrinoe/inventarionext/blob/main/js/modules/reportes.js"
click node_images "https://github.com/peregrinoe/inventarionext/blob/main/js/core/images.js"
click node_database "https://github.com/peregrinoe/inventarionext/blob/main/js/core/database.js"
click node_clientauth "https://github.com/peregrinoe/inventarionext/blob/main/js/core/auth.js"
click node_server "https://github.com/peregrinoe/inventarionext/blob/main/api/server.js"
click node_authmw "https://github.com/peregrinoe/inventarionext/blob/main/api/middleware/auth.js"
click node_pool "https://github.com/peregrinoe/inventarionext/blob/main/api/db.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_webapp,node_people,node_equipment,node_phones,node_assignments,node_licenses,node_accessories,node_offboarding,node_dashboard,node_reports,node_user,node_apiconsumer toneBlue
class node_images,node_database,node_supabase toneAmber
class node_clientauth toneMint
class node_server,node_authmw,node_pool toneRose
class node_postgres toneIndigo
```

## Components

### Inventory workflows

- [Inventory interface](https://github.com/peregrinoe/inventarionext/blob/main/index.html): `index.html`
- [Colaborators](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/colaboradores.js): `js/modules/colaboradores.js`
- [Computer equipment](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/equipos.js): `js/modules/equipos.js`
- [Mobile phones](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/celulares.js): `js/modules/celulares.js`
- [Asset assignments](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/asignaciones.js): `js/modules/asignaciones.js`
- [Software licenses](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/licencias.js): `js/modules/licencias.js`
- [Accessories](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/accesorios.js): `js/modules/accesorios.js`
- [Asset offboarding](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/bajas.js): `js/modules/bajas.js`
- [Dashboard](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/dashboard.js): `js/modules/dashboard.js`
- [Reports](https://github.com/peregrinoe/inventarionext/blob/main/js/modules/reportes.js): `js/modules/reportes.js`

### Client foundation

- [Image handling](https://github.com/peregrinoe/inventarionext/blob/main/js/core/images.js): `js/core/images.js`
- [Data access](https://github.com/peregrinoe/inventarionext/blob/main/js/core/database.js): `js/core/database.js`

### Authentication

- [Client authentication](https://github.com/peregrinoe/inventarionext/blob/main/js/core/auth.js): `js/core/auth.js`

### API backend

- [Express API](https://github.com/peregrinoe/inventarionext/blob/main/api/server.js): `api/server.js`
- [JWT authorization](https://github.com/peregrinoe/inventarionext/blob/main/api/middleware/auth.js): `api/middleware/auth.js`
- [PostgreSQL access](https://github.com/peregrinoe/inventarionext/blob/main/api/db.js): `api/db.js`

### Data services

- **PostgreSQL database**

### Other components

- **Inventory user**
- **Supabase**
- **API client**

## Connections

- Inventory user → Inventory interface: uses
- Inventory interface → Client authentication: signs in
- Client authentication → Supabase: authenticates
- Client authentication → Data access: loads data
- Colaborators → Data access: reads/writes
- Computer equipment → Data access: reads/writes
- Mobile phones → Data access: reads/writes
- Asset assignments → Data access: reads/writes
- Software licenses → Data access: reads/writes
- Accessories → Data access: reads/writes
- Asset offboarding → Data access: reads/writes
- Dashboard → Data access: reads
- Reports → Data access: exports data
- Colaborators → Image handling: uses
- Computer equipment → Image handling: uses
- Mobile phones → Image handling: uses
- Data access → Supabase: queries
- API client → Express API: requests
- Express API → JWT authorization: checks access
- Express API → PostgreSQL access: queries
- PostgreSQL access → PostgreSQL database: reads/writes
