# lautaroriofrio/vercelgestorllamadosapi architecture

> Architecture diagram of the GitHub repository lautaroriofrio/vercelgestorllamadosapi, 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/lautaroriofrio/vercelgestorllamadosapi
- Repository: https://github.com/lautaroriofrio/vercelgestorllamadosapi

## Overview

Gestor Llamados API is an Express REST service for managing phone-call records (llamados), their scheduled follow-ups (rellamados), and a combined chronological records view. Clients send requests through the app’s mounted routes to controllers, which validate and shape input, query Prisma/MongoDB, and return paginated results. Follow-up and combined-record handlers also attach related call data. The README documents filtering, pagination, and Swagger; the sampled code does not include every controller or the Prisma client setup, so uncertain internal wiring is omitted.

Main entry points: [`src/app.js`](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/app.js) (Express app), [`src/controllers/llamados.controller.js`](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/llamados.controller.js) (Llamados), [`src/controllers/rellamados.controller.js`](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/rellamados.controller.js) (Rellamados), [`src/controllers/registros.controller.js`](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/registros.controller.js) (Combined records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API entry"]
  node_app["Express app<br/>[app.js]"]
  node_llamados_routes["Llamados routes<br/>[llamados.routes.js]"]
  node_rellamados_routes["Rellamados routes"]
  node_registros_routes["Registros routes"]
  node_docs["API docs<br/>[openapi.yaml]"]
end

subgraph group_domain["Record workflows"]
  node_llamados_controller["Llamados"]
  node_rellamados_controller["Rellamados"]
  node_registros_controller["Combined records"]
end

subgraph group_data["Persistence"]
  node_prisma_client["Prisma client<br/>[prisma.js]"]
  node_data_model["Data model<br/>[schema.prisma]"]
  node_mongodb[("MongoDB")]
end

subgraph group_shared["Shared handling"]
  node_filters["Search filters<br/>[filters.js]"]
  node_validation["Input validation<br/>[validation.js]"]
  node_selects["Query selections<br/>[selects.js]"]
  node_errors["Error handling<br/>[error-handler.js]"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_app
node_app -->|"mounts /llamados"| node_llamados_routes
node_app -->|"mounts /rellamados"| node_rellamados_routes
node_app -->|"mounts /registros"| node_registros_routes
node_app -->|"serves docs"| node_docs
node_app -->|"forwards errors"| node_errors
node_llamados_routes -->|"dispatches"| node_llamados_controller
node_rellamados_routes -->|"dispatches"| node_rellamados_controller
node_registros_routes -->|"dispatches"| node_registros_controller
node_llamados_controller -->|"queries"| node_prisma_client
node_rellamados_controller -->|"queries"| node_prisma_client
node_registros_controller -->|"queries"| node_prisma_client
node_llamados_controller -->|"builds search"| node_filters
node_rellamados_controller -->|"builds search"| node_filters
node_registros_controller -->|"builds search"| node_filters
node_llamados_controller -->|"validates input"| node_validation
node_rellamados_controller -->|"validates input"| node_validation
node_registros_controller -->|"parses paging"| node_validation
node_llamados_controller -->|"selects fields"| node_selects
node_rellamados_controller -->|"selects fields"| node_selects
node_registros_controller -->|"selects fields"| node_selects
node_prisma_client -->|"reads and writes"| node_mongodb
node_data_model -->|"defines models"| node_prisma_client

click node_app "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/app.js"
click node_llamados_routes "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/routes/llamados.routes.js"
click node_rellamados_routes "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/routes/rellamados.routes.js"
click node_registros_routes "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/routes/registros.routes.js"
click node_docs "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/openapi.yaml"
click node_llamados_controller "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/llamados.controller.js"
click node_rellamados_controller "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/rellamados.controller.js"
click node_registros_controller "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/registros.controller.js"
click node_prisma_client "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/prisma.js"
click node_data_model "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/prisma/schema.prisma"
click node_filters "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/utils/filters.js"
click node_validation "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/utils/validation.js"
click node_selects "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/utils/selects.js"
click node_errors "https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/middlewares/error-handler.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_llamados_routes,node_rellamados_routes,node_registros_routes,node_docs,node_client toneBlue
class node_llamados_controller,node_rellamados_controller,node_registros_controller toneAmber
class node_prisma_client,node_data_model,node_mongodb toneMint
class node_filters,node_validation,node_selects,node_errors toneRose
```

## Components

### API entry

- [Express app](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/app.js): `src/app.js`
- [Llamados routes](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/routes/llamados.routes.js): `src/routes/llamados.routes.js`
- [Rellamados routes](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/routes/rellamados.routes.js): `src/routes/rellamados.routes.js`
- [Registros routes](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/routes/registros.routes.js): `src/routes/registros.routes.js`
- [API docs](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/openapi.yaml): `openapi.yaml`

### Record workflows

- [Llamados](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/llamados.controller.js): `src/controllers/llamados.controller.js`
- [Rellamados](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/rellamados.controller.js): `src/controllers/rellamados.controller.js`
- [Combined records](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/controllers/registros.controller.js): `src/controllers/registros.controller.js`

### Persistence

- [Prisma client](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/prisma.js): `src/prisma.js`
- [Data model](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/prisma/schema.prisma): `prisma/schema.prisma`
- **MongoDB**

### Shared handling

- [Search filters](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/utils/filters.js): `src/utils/filters.js`
- [Input validation](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/utils/validation.js): `src/utils/validation.js`
- [Query selections](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/utils/selects.js): `src/utils/selects.js`
- [Error handling](https://github.com/lautaroriofrio/vercelgestorllamadosapi/blob/main/src/middlewares/error-handler.js): `src/middlewares/error-handler.js`

### Other components

- **API client**

## Connections

- API client → Express app: sends requests
- Express app → Llamados routes: mounts /llamados
- Express app → Rellamados routes: mounts /rellamados
- Express app → Registros routes: mounts /registros
- Express app → API docs: serves docs
- Express app → Error handling: forwards errors
- Llamados routes → Llamados: dispatches
- Rellamados routes → Rellamados: dispatches
- Registros routes → Combined records: dispatches
- Llamados → Prisma client: queries
- Rellamados → Prisma client: queries
- Combined records → Prisma client: queries
- Llamados → Search filters: builds search
- Rellamados → Search filters: builds search
- Combined records → Search filters: builds search
- Llamados → Input validation: validates input
- Rellamados → Input validation: validates input
- Combined records → Input validation: parses paging
- Llamados → Query selections: selects fields
- Rellamados → Query selections: selects fields
- Combined records → Query selections: selects fields
- Prisma client → MongoDB: reads and writes
- Data model → Prisma client: defines models
