# geovanesv/backend-reservas-nest architecture

> Architecture diagram of the GitHub repository geovanesv/backend-reservas-nest, 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/geovanesv/backend-reservas-nest
- Repository: https://github.com/geovanesv/backend-reservas-nest

## Overview

This NestJS backend provides event, reservation, and user operations. The principal domain flow is creating a reservation: the reservation service looks up the event, checks and increments its capacity count, then saves the reservation. Event and user CRUD are additional capabilities. The graph also shows the shared application wiring and persistence layer. Some controller and module excerpts were unavailable, so those connections are omitted rather than inferred.

Main entry points: [`src/app.module.ts`](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/app.module.ts) (Application module), [`src/reservas/reservas.service.ts`](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/reservas.service.ts) (Reservations service), [`src/eventos/eventos.service.ts`](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/eventos.service.ts) (Events service), [`src/users/users.service.ts`](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/users.service.ts) (Users service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application wiring"]
  node_app_module["Application module<br/>[app.module.ts]"]
  node_data_source["Data source config<br/>[data-source.ts]"]
end

subgraph group_events["Event management"]
  node_events_controller["Events controller"]
  node_events_service["Events service<br/>[eventos.service.ts]"]
  node_event_dto["Create event DTO"]
end

subgraph group_reservations["Reservation management"]
  node_reservations_controller["Reservations controller"]
  node_reservations_service["Reservations service"]
  node_reservation_dto["Create reservation DTO"]
end

subgraph group_users["User management"]
  node_users_controller["Users controller"]
  node_users_service["Users service<br/>[users.service.ts]"]
  node_user_dto["Create user DTO<br/>[createUser.dto.ts]"]
end

subgraph group_persistence["Persistence model"]
  node_event_repo["Event repository"]
  node_reservation_repo["Reservation repository"]
  node_user_repo["User repository<br/>[user.repository.ts]"]
  node_event_entity["Event entity<br/>[evento.entity.ts]"]
  node_reservation_entity["Reservation entity<br/>[reservas.entity.ts]"]
  node_user_entity["User entity<br/>[user.entity.ts]"]
end

node_client(("API client"))

node_app_module -->|"configures from"| node_data_source
node_app_module -->|"registers module"| node_events_service
node_app_module -->|"registers module"| node_reservations_service
node_app_module -->|"registers module"| node_users_controller
node_events_service -->|"uses"| node_event_repo
node_events_service -->|"accepts"| node_event_dto
node_reservations_service -->|"looks up and updates"| node_event_repo
node_reservations_service -->|"creates and saves"| node_reservation_repo
node_reservations_service -->|"returns"| node_reservation_dto
node_users_controller -->|"dispatches to"| node_users_service
node_users_service -->|"uses"| node_user_repo
node_users_service -->|"accepts"| node_user_dto
node_event_repo -->|"manages"| node_event_entity
node_reservation_repo -->|"manages"| node_reservation_entity
node_user_repo -->|"manages"| node_user_entity
node_reservation_entity -->|"references"| node_event_entity

click node_app_module "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/app.module.ts"
click node_data_source "https://github.com/geovanesv/backend-reservas-nest/blob/master/db/data-source.ts"
click node_events_controller "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/eventos.controller.ts"
click node_events_service "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/eventos.service.ts"
click node_event_dto "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/dto/createEvento.dto.ts"
click node_reservations_controller "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/reservas.controller.ts"
click node_reservations_service "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/reservas.service.ts"
click node_reservation_dto "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/dto/createReserva.dto.ts"
click node_users_controller "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/users.controller.ts"
click node_users_service "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/users.service.ts"
click node_user_dto "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/dto/createUser.dto.ts"
click node_event_repo "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/repositories/evento.repository.ts"
click node_reservation_repo "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/repositories/reservas.repository.ts"
click node_user_repo "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/repositories/user.repository.ts"
click node_event_entity "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/entitys/evento.entity.ts"
click node_reservation_entity "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/entitys/reservas.entity.ts"
click node_user_entity "https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/entitys/user.entity.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_app_module,node_data_source,node_client toneBlue
class node_events_controller,node_events_service,node_event_dto toneAmber
class node_reservations_controller,node_reservations_service,node_reservation_dto toneMint
class node_users_controller,node_users_service,node_user_dto toneRose
class node_event_repo,node_reservation_repo,node_user_repo,node_event_entity,node_reservation_entity,node_user_entity toneIndigo
```

## Components

### Application wiring

- [Application module](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/app.module.ts): `src/app.module.ts`
- [Data source config](https://github.com/geovanesv/backend-reservas-nest/blob/master/db/data-source.ts): `db/data-source.ts`

### Event management

- [Events controller](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/eventos.controller.ts): `src/eventos/eventos.controller.ts`
- [Events service](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/eventos.service.ts): `src/eventos/eventos.service.ts`
- [Create event DTO](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/eventos/dto/createEvento.dto.ts): `src/eventos/dto/createEvento.dto.ts`

### Reservation management

- [Reservations controller](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/reservas.controller.ts): `src/reservas/reservas.controller.ts`
- [Reservations service](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/reservas.service.ts): `src/reservas/reservas.service.ts`
- [Create reservation DTO](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/reservas/dto/createReserva.dto.ts): `src/reservas/dto/createReserva.dto.ts`

### User management

- [Users controller](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/users.controller.ts): `src/users/users.controller.ts`
- [Users service](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/users.service.ts): `src/users/users.service.ts`
- [Create user DTO](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/users/dto/createUser.dto.ts): `src/users/dto/createUser.dto.ts`

### Persistence model

- [Event repository](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/repositories/evento.repository.ts): `src/core/repositories/evento.repository.ts`
- [Reservation repository](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/repositories/reservas.repository.ts): `src/core/repositories/reservas.repository.ts`
- [User repository](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/repositories/user.repository.ts): `src/core/repositories/user.repository.ts`
- [Event entity](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/entitys/evento.entity.ts): `src/core/entitys/evento.entity.ts`
- [Reservation entity](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/entitys/reservas.entity.ts): `src/core/entitys/reservas.entity.ts`
- [User entity](https://github.com/geovanesv/backend-reservas-nest/blob/master/src/core/entitys/user.entity.ts): `src/core/entitys/user.entity.ts`

### Other components

- **API client**

## Connections

- Application module → Data source config: configures from (evidence: `src/app.module.ts`)
- Application module → Events service: registers module (evidence: `src/app.module.ts`)
- Application module → Reservations service: registers module (evidence: `src/app.module.ts`)
- Application module → Users controller: registers module (evidence: `src/app.module.ts`)
- Events service → Event repository: uses (evidence: `src/eventos/eventos.service.ts`)
- Events service → Create event DTO: accepts (evidence: `src/eventos/eventos.service.ts`)
- Reservations service → Event repository: looks up and updates (evidence: `src/reservas/reservas.service.ts`)
- Reservations service → Reservation repository: creates and saves (evidence: `src/reservas/reservas.service.ts`)
- Reservations service → Create reservation DTO: returns (evidence: `src/reservas/reservas.service.ts`)
- Users controller → Users service: dispatches to (evidence: `src/users/users.controller.ts`)
- Users service → User repository: uses (evidence: `src/users/users.service.ts`)
- Users service → Create user DTO: accepts (evidence: `src/users/users.service.ts`)
- Event repository → Event entity: manages (evidence: `src/core/repositories/evento.repository.ts`)
- Reservation repository → Reservation entity: manages (evidence: `src/core/repositories/reservas.repository.ts`)
- User repository → User entity: manages (evidence: `src/core/repositories/user.repository.ts`)
- Reservation entity → Event entity: references (evidence: `src/core/entitys/reservas.entity.ts`)
