# dosaraviaq/api-cine-dip architecture

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

- Interactive diagram: https://gitdiagram.com/dosaraviaq/api-cine-dip
- Repository: https://github.com/dosaraviaq/api-cine-dip

## Overview

This is a NestJS cinema-booking API: users authenticate, browse films and screenings/seats, then submit a seat reservation; administrators manage people, roles, films and screenings. The map separates identity, catalogue/scheduling, reservations, and shared runtime concerns. Controllers and the persona/authentication flows are supported by sampled source; other service-to-repository links follow the module layout, while uncertain file-upload wiring is omitted. PostgreSQL is configured in the application module.

Main entry points: [`src/modules/auth/auth.service.ts`](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.service.ts) (Auth Service), [`src/modules/persona/persona.service.ts`](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.service.ts) (People Service), [`src/modules/reservas/reservas.service.ts`](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.service.ts) (Reservations Service), [`src/modules/auth/auth.controller.ts`](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.controller.ts) (Auth API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_controller["Auth API<br/>[auth.controller.ts]"]
  node_auth_service["Auth Service<br/>[auth.service.ts]"]
  node_auth_repository["Auth Repository<br/>[auth.repository.ts]"]
  node_persona_controller["People API"]
  node_persona_service["People Service<br/>[persona.service.ts]"]
  node_persona_repository["People Repository"]
  node_jwt_strategy["JWT Strategy<br/>[jwt.strategy.ts]"]
  node_roles_guard["Role Guard<br/>[roles.guard.ts]"]
end

subgraph group_catalog["Films And Schedule"]
  node_movies_api["Films API"]
  node_schedule_api["Schedule API"]
  node_schedule_service["Schedule Service"]
  node_schedule_repository["Schedule Repository"]
  node_files_api["Files API"]
  node_files_service["Files Service<br/>[files.service.ts]"]
end

subgraph group_booking["Reservations"]
  node_booking_api["Reservations API"]
  node_booking_service["Reservations Service"]
  node_booking_repository["Reservations Repository"]
end

subgraph group_runtime["Shared Runtime"]
  node_app["App Configuration<br/>[app.module.ts]"]
  node_postgres[("PostgreSQL")]
  node_bootstrap["HTTP Bootstrap<br/>[main.ts]"]
end

node_caller(("API Client"))

node_caller -->|"login request"| node_auth_controller
node_auth_controller -->|"authenticates"| node_auth_service
node_auth_service -->|"checks credentials"| node_auth_repository
node_auth_repository -->|"reads identity"| node_postgres
node_auth_service -->|"issues token"| node_jwt_strategy
node_caller -->|"people requests"| node_persona_controller
node_persona_controller -->|"manages people"| node_persona_service
node_persona_service -->|"reads and writes"| node_persona_repository
node_persona_service -->|"creates account"| node_auth_service
node_persona_repository -->|"persists people"| node_postgres
node_auth_service -->|"persists credentials"| node_postgres
node_caller -->|"film requests"| node_movies_api
node_movies_api -->|"manages films"| node_booking_service
node_caller -->|"schedule requests"| node_schedule_api
node_schedule_api -->|"queries schedule"| node_schedule_service
node_schedule_service -->|"loads schedule"| node_schedule_repository
node_schedule_repository -->|"reads schedule"| node_postgres
node_caller -->|"reserves seats"| node_booking_api
node_booking_api -->|"creates reservation"| node_booking_service
node_booking_service -->|"stores reservation"| node_booking_repository
node_booking_repository -->|"reads and writes"| node_postgres
node_caller -.->|"file requests"| node_files_api
node_files_api -.->|"handles files"| node_files_service
node_bootstrap -->|"starts application"| node_app
node_app -->|"configures connection"| node_postgres
node_caller -->|"protected request"| node_roles_guard
node_roles_guard -->|"validates token"| node_jwt_strategy

click node_auth_controller "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.controller.ts"
click node_auth_service "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.service.ts"
click node_auth_repository "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.repository.ts"
click node_persona_controller "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.controller.ts"
click node_persona_service "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.service.ts"
click node_persona_repository "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.repository.ts"
click node_jwt_strategy "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/strategies/jwt.strategy.ts"
click node_roles_guard "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/guards/roles.guard.ts"
click node_movies_api "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/peliculas.controller.ts"
click node_schedule_api "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/cartelera.controller.ts"
click node_schedule_service "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/cartelera.service.ts"
click node_schedule_repository "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/cartelera.repository.ts"
click node_booking_api "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.controller.ts"
click node_booking_service "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.service.ts"
click node_booking_repository "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.repository.ts"
click node_files_api "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/files.controller.ts"
click node_files_service "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/files.service.ts"
click node_app "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/app.module.ts"
click node_bootstrap "https://github.com/dosaraviaq/api-cine-dip/blob/master/src/main.ts"

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_auth_controller,node_auth_service,node_auth_repository,node_persona_controller,node_persona_service,node_persona_repository,node_jwt_strategy,node_roles_guard,node_caller toneBlue
class node_movies_api,node_schedule_api,node_schedule_service,node_schedule_repository,node_files_api,node_files_service toneAmber
class node_booking_api,node_booking_service,node_booking_repository toneMint
class node_app,node_postgres,node_bootstrap toneRose
```

## Components

### Identity

- [Auth API](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.controller.ts): `src/modules/auth/auth.controller.ts`
- [Auth Service](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`
- [Auth Repository](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/auth.repository.ts): `src/modules/auth/auth.repository.ts`
- [People API](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.controller.ts): `src/modules/persona/persona.controller.ts`
- [People Service](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.service.ts): `src/modules/persona/persona.service.ts`
- [People Repository](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/persona/persona.repository.ts): `src/modules/persona/persona.repository.ts`
- [JWT Strategy](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/strategies/jwt.strategy.ts): `src/modules/auth/strategies/jwt.strategy.ts`
- [Role Guard](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/auth/guards/roles.guard.ts): `src/modules/auth/guards/roles.guard.ts`

### Films And Schedule

- [Films API](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/peliculas.controller.ts): `src/modules/reservas/peliculas.controller.ts`
- [Schedule API](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/cartelera.controller.ts): `src/modules/reservas/cartelera.controller.ts`
- [Schedule Service](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/cartelera.service.ts): `src/modules/reservas/cartelera.service.ts`
- [Schedule Repository](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/cartelera.repository.ts): `src/modules/reservas/cartelera.repository.ts`
- [Files API](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/files.controller.ts): `src/modules/reservas/files.controller.ts`
- [Files Service](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/files.service.ts): `src/modules/reservas/files.service.ts`

### Reservations

- [Reservations API](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.controller.ts): `src/modules/reservas/reservas.controller.ts`
- [Reservations Service](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.service.ts): `src/modules/reservas/reservas.service.ts`
- [Reservations Repository](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/modules/reservas/reservas.repository.ts): `src/modules/reservas/reservas.repository.ts`

### Shared Runtime

- [App Configuration](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/app.module.ts): `src/app.module.ts`
- **PostgreSQL**
- [HTTP Bootstrap](https://github.com/dosaraviaq/api-cine-dip/blob/master/src/main.ts): `src/main.ts`

### Other components

- **API Client**

## Connections

- API Client → Auth API: login request
- Auth API → Auth Service: authenticates
- Auth Service → Auth Repository: checks credentials
- Auth Repository → PostgreSQL: reads identity
- Auth Service → JWT Strategy: issues token
- API Client → People API: people requests
- People API → People Service: manages people
- People Service → People Repository: reads and writes
- People Service → Auth Service: creates account
- People Repository → PostgreSQL: persists people
- Auth Service → PostgreSQL: persists credentials
- API Client → Films API: film requests
- Films API → Reservations Service: manages films
- API Client → Schedule API: schedule requests
- Schedule API → Schedule Service: queries schedule
- Schedule Service → Schedule Repository: loads schedule
- Schedule Repository → PostgreSQL: reads schedule
- API Client → Reservations API: reserves seats
- Reservations API → Reservations Service: creates reservation
- Reservations Service → Reservations Repository: stores reservation
- Reservations Repository → PostgreSQL: reads and writes
- API Client → Files API: file requests
- Files API → Files Service: handles files
- HTTP Bootstrap → App Configuration: starts application
- App Configuration → PostgreSQL: configures connection
- API Client → Role Guard: protected request
- Role Guard → JWT Strategy: validates token
