# nekoscript-exe/ritmo architecture

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

- Interactive diagram: https://gitdiagram.com/nekoscript-exe/ritmo
- Repository: https://github.com/nekoscript-exe/ritmo

## Overview

Ritmo es una agenda personal con hábitos, cuentas y vistas diaria y semanal. El flujo principal va del navegador, por la interfaz servida por Nginx, a la API: allí se valida la sesión y la petición, se consultan o modifican los datos y se devuelve la vista solicitada. La API también gestiona el registro, inicio y cierre de sesión. PostgreSQL conserva cuentas, sesiones, hábitos, marcas y bloques. Las relaciones de despliegue y las capacidades semanales están documentadas; las llamadas específicas de la interfaz se muestran solo donde aparecen en los extractos.

Main entry points: [`nginx/default.conf`](https://github.com/nekoscript-exe/ritmo/blob/main/nginx/default.conf) (Nginx), [`api/db.py`](https://github.com/nekoscript-exe/ritmo/blob/main/api/db.py) (Conexión y consultas), [`frontend/app.js`](https://github.com/nekoscript-exe/ritmo/blob/main/frontend/app.js) (Agenda y vistas), [`frontend/http.js`](https://github.com/nekoscript-exe/ritmo/blob/main/frontend/http.js) (Cliente HTTP)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Interfaz web"]
  node_workspace["Agenda y vistas<br/>[app.js]"]
  node_http["Cliente HTTP<br/>[http.js]"]
end

subgraph group_api["API y dominio"]
  node_accounts["Cuentas y sesiones<br/>[auth.py]"]
  node_daily["Vista diaria<br/>[main.py]"]
  node_habits["Hábitos y marcas<br/>[main.py]"]
  node_blocks["Bloques y categorías<br/>[main.py]"]
  node_weekly["Resumen semanal<br/>[main.py]"]
  node_health["Comprobación de salud<br/>[main.py]"]
end

subgraph group_persistence["Persistencia"]
  node_db["Conexión y consultas<br/>[db.py]"]
  node_migrations["Migraciones SQL"]
  node_postgres[("PostgreSQL")]
end

subgraph group_delivery["Acceso web"]
  node_nginx["Nginx<br/>[default.conf]"]
end

node_browser(("Persona usuaria"))

node_browser -->|"usa"| node_nginx
node_nginx -->|"sirve interfaz"| node_workspace
node_workspace -->|"solicita datos"| node_http
node_http -->|"envía /api"| node_nginx
node_nginx -->|"reenvía API"| node_accounts
node_nginx -->|"reenvía API"| node_daily
node_nginx -->|"reenvía API"| node_habits
node_nginx -->|"reenvía API"| node_blocks
node_nginx -->|"reenvía API"| node_weekly
node_accounts -->|"consulta sesiones"| node_db
node_daily -->|"consulta día"| node_db
node_habits -->|"guarda marcas"| node_db
node_blocks -->|"guarda bloques"| node_db
node_weekly -->|"consulta semana"| node_db
node_health -->|"verifica conexión"| node_db
node_db -->|"aplica SQL"| node_migrations
node_db -->|"consulta y persiste"| node_postgres

click node_workspace "https://github.com/nekoscript-exe/ritmo/blob/main/frontend/app.js"
click node_http "https://github.com/nekoscript-exe/ritmo/blob/main/frontend/http.js"
click node_nginx "https://github.com/nekoscript-exe/ritmo/blob/main/nginx/default.conf"
click node_accounts "https://github.com/nekoscript-exe/ritmo/blob/main/api/auth.py"
click node_daily "https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py"
click node_habits "https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py"
click node_blocks "https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py"
click node_weekly "https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py"
click node_health "https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py"
click node_db "https://github.com/nekoscript-exe/ritmo/blob/main/api/db.py"
click node_migrations "https://github.com/nekoscript-exe/ritmo/tree/main/api/migrations"

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_workspace,node_http toneBlue
class node_accounts,node_daily,node_habits,node_blocks,node_weekly,node_health toneAmber
class node_db,node_migrations,node_postgres toneMint
class node_nginx toneRose
class node_browser toneIndigo
```

## Components

### Interfaz web

- [Agenda y vistas](https://github.com/nekoscript-exe/ritmo/blob/main/frontend/app.js): `frontend/app.js`
- [Cliente HTTP](https://github.com/nekoscript-exe/ritmo/blob/main/frontend/http.js): `frontend/http.js`

### API y dominio

- [Cuentas y sesiones](https://github.com/nekoscript-exe/ritmo/blob/main/api/auth.py): `api/auth.py`
- [Vista diaria](https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py): `api/main.py`
- [Hábitos y marcas](https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py): `api/main.py`
- [Bloques y categorías](https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py): `api/main.py`
- [Resumen semanal](https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py): `api/main.py`
- [Comprobación de salud](https://github.com/nekoscript-exe/ritmo/blob/main/api/main.py): `api/main.py`

### Persistencia

- [Conexión y consultas](https://github.com/nekoscript-exe/ritmo/blob/main/api/db.py): `api/db.py`
- [Migraciones SQL](https://github.com/nekoscript-exe/ritmo/tree/main/api/migrations): `api/migrations`
- **PostgreSQL**

### Acceso web

- [Nginx](https://github.com/nekoscript-exe/ritmo/blob/main/nginx/default.conf): `nginx/default.conf`

### Other components

- **Persona usuaria**

## Connections

- Persona usuaria → Nginx: usa (evidence: `README.md`)
- Nginx → Agenda y vistas: sirve interfaz (evidence: `README.md`)
- Agenda y vistas → Cliente HTTP: solicita datos (evidence: `frontend/app.js`)
- Cliente HTTP → Nginx: envía /api (evidence: `frontend/http.js`)
- Nginx → Cuentas y sesiones: reenvía API (evidence: `README.md`)
- Nginx → Vista diaria: reenvía API (evidence: `README.md`)
- Nginx → Hábitos y marcas: reenvía API (evidence: `README.md`)
- Nginx → Bloques y categorías: reenvía API (evidence: `README.md`)
- Nginx → Resumen semanal: reenvía API (evidence: `README.md`)
- Cuentas y sesiones → Conexión y consultas: consulta sesiones (evidence: `api/auth.py`)
- Vista diaria → Conexión y consultas: consulta día (evidence: `api/main.py`)
- Hábitos y marcas → Conexión y consultas: guarda marcas (evidence: `api/main.py`)
- Bloques y categorías → Conexión y consultas: guarda bloques (evidence: `api/main.py`)
- Resumen semanal → Conexión y consultas: consulta semana (evidence: `api/main.py`)
- Comprobación de salud → Conexión y consultas: verifica conexión (evidence: `api/main.py`)
- Conexión y consultas → Migraciones SQL: aplica SQL (evidence: `api/db.py`)
- Conexión y consultas → PostgreSQL: consulta y persiste (evidence: `README.md`)
