# edujrubm/sistema-nuevos-horizontes architecture

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

- Interactive diagram: https://gitdiagram.com/edujrubm/sistema-nuevos-horizontes
- Repository: https://github.com/edujrubm/sistema-nuevos-horizontes

## Overview

Sistema Nuevos Horizontes is a React/NestJS application for beneficiary care, permanent records, children, area forms, shelter operations, and documents. The principal workflow is staff entering or finding a beneficiary, creating and confirming an initial record, then using area-specific forms, evolution, shelter, and document screens to maintain the case. The graph shows the sampled routing and service calls, plus documented product areas. Several backend modules and frontend API clients are present in the tree but were not sampled, so their internal links are omitted.

Main entry points: [`frontend/src/app/router/router.tsx`](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/app/router/router.tsx) (Route dispatch), [`frontend/src/modules/documentos/DocumentsPage.tsx`](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/documentos/DocumentsPage.tsx) (Document screens), [`src/modules/documentos/documentos.controller.ts`](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/documentos.controller.ts) (Document routes), [`src/modules/documentos/carga-pdf.service.ts`](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/carga-pdf.service.ts) (PDF upload)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Staff interface"]
  node_router["Route dispatch<br/>[router.tsx]"]
  node_beneficiary_ui["Beneficiary screens"]
  node_admission_ui["Admission wizard"]
  node_persona_ui["Case forms and evolution"]
  node_documents_ui["Document screens<br/>[DocumentsPage.tsx]"]
  node_shelter_ui["Shelter screens"]
end

subgraph group_case["Beneficiary records"]
  node_beneficiaries_api["Beneficiary API"]
  node_admission_api["Admission API<br/>[admission-api.ts]"]
  node_beneficiary_controller["Beneficiary routes"]
  node_admission_controller["Initial record routes"]
  node_beneficiary_service["Beneficiary service"]
  node_admission_service["Initial record service"]
end

subgraph group_care["Area care"]
  node_persona_api["Persona3 API<br/>[persona3.ts]"]
  node_persona_controller["Persona3 and evolution routes"]
  node_persona_service["Persona3 service"]
  node_forms["Area forms"]
end

subgraph group_operations["Shelter and documents"]
  node_documents_api["Documents API<br/>[api.ts]"]
  node_shelter_api["Shelter API<br/>[albergue-api.ts]"]
  node_shelter_controller["Shelter routes"]
  node_shelter_service["Shelter service"]
  node_documents_controller["Document routes"]
  node_documents_service["Document services"]
  node_pdf_service["PDF upload"]
end

subgraph group_platform["API platform"]
  node_postgres[("PostgreSQL")]
  node_api_runtime["Nest application<br/>[app.module.ts]"]
end

node_staff(("Staff user"))

node_staff -->|"opens screens"| node_router
node_router -->|"routes to"| node_beneficiary_ui
node_router -->|"routes to"| node_admission_ui
node_router -->|"routes to"| node_persona_ui
node_router -->|"routes to"| node_documents_ui
node_router -->|"routes to"| node_shelter_ui
node_documents_ui -->|"uses"| node_documents_api
node_documents_ui -->|"renders upload field"| node_pdf_service
node_beneficiary_controller -->|"calls"| node_beneficiary_service
node_admission_controller -->|"calls"| node_admission_service
node_shelter_controller -->|"calls"| node_shelter_service
node_documents_controller -->|"calls"| node_documents_service
node_documents_controller -->|"dispatches upload"| node_pdf_service
node_persona_controller -->|"handles requests"| node_persona_service
node_api_runtime -.->|"uses database"| node_postgres

click node_router "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/app/router/router.tsx"
click node_beneficiary_ui "https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/beneficiaries/pages"
click node_admission_ui "https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/admission/pages"
click node_persona_ui "https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/persona3"
click node_documents_ui "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/documentos/DocumentsPage.tsx"
click node_shelter_ui "https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/albergue/pages"
click node_beneficiaries_api "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/beneficiaries/api/beneficiaries-api.ts"
click node_admission_api "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/admission/api/admission-api.ts"
click node_persona_api "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/shared/api/persona3.ts"
click node_documents_api "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/documentos/api.ts"
click node_shelter_api "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/albergue/api/albergue-api.ts"
click node_beneficiary_controller "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/beneficiarias/beneficiarias.controller.ts"
click node_admission_controller "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/ficha-inicial/ficha-inicial.controller.ts"
click node_beneficiary_service "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/beneficiarias/beneficiarias.service.ts"
click node_admission_service "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/ficha-inicial/ficha-inicial.service.ts"
click node_persona_controller "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/persona3/persona3.service.ts"
click node_persona_service "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/persona3/persona3.service.ts"
click node_forms "https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/src/modules/formularios"
click node_shelter_controller "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/albergue/albergue.controller.ts"
click node_shelter_service "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/albergue/albergue.service.ts"
click node_documents_controller "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/documentos.controller.ts"
click node_documents_service "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/documentos.service.ts"
click node_pdf_service "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/carga-pdf.service.ts"
click node_api_runtime "https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/app.module.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_router,node_beneficiary_ui,node_admission_ui,node_persona_ui,node_documents_ui,node_shelter_ui,node_staff toneBlue
class node_beneficiaries_api,node_admission_api,node_beneficiary_controller,node_admission_controller,node_beneficiary_service,node_admission_service toneAmber
class node_persona_api,node_persona_controller,node_persona_service,node_forms toneMint
class node_documents_api,node_shelter_api,node_shelter_controller,node_shelter_service,node_documents_controller,node_documents_service,node_pdf_service toneRose
class node_postgres,node_api_runtime toneIndigo
```

## Components

### Staff interface

- [Route dispatch](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/app/router/router.tsx): `frontend/src/app/router/router.tsx`
- [Beneficiary screens](https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/beneficiaries/pages): `frontend/src/modules/beneficiaries/pages`
- [Admission wizard](https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/admission/pages): `frontend/src/modules/admission/pages`
- [Case forms and evolution](https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/persona3): `frontend/src/modules/persona3`
- [Document screens](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/documentos/DocumentsPage.tsx): `frontend/src/modules/documentos/DocumentsPage.tsx`
- [Shelter screens](https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/frontend/src/modules/albergue/pages): `frontend/src/modules/albergue/pages`

### Beneficiary records

- [Beneficiary API](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/beneficiaries/api/beneficiaries-api.ts): `frontend/src/modules/beneficiaries/api/beneficiaries-api.ts`
- [Admission API](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/admission/api/admission-api.ts): `frontend/src/modules/admission/api/admission-api.ts`
- [Beneficiary routes](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/beneficiarias/beneficiarias.controller.ts): `src/modules/beneficiarias/beneficiarias.controller.ts`
- [Initial record routes](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/ficha-inicial/ficha-inicial.controller.ts): `src/modules/ficha-inicial/ficha-inicial.controller.ts`
- [Beneficiary service](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/beneficiarias/beneficiarias.service.ts): `src/modules/beneficiarias/beneficiarias.service.ts`
- [Initial record service](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/ficha-inicial/ficha-inicial.service.ts): `src/modules/ficha-inicial/ficha-inicial.service.ts`

### Area care

- [Persona3 API](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/shared/api/persona3.ts): `frontend/src/shared/api/persona3.ts`
- [Persona3 and evolution routes](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/persona3/persona3.service.ts): `src/modules/persona3/persona3.service.ts`
- [Persona3 service](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/persona3/persona3.service.ts): `src/modules/persona3/persona3.service.ts`
- [Area forms](https://github.com/edujrubm/sistema-nuevos-horizontes/tree/main/src/modules/formularios): `src/modules/formularios`

### Shelter and documents

- [Documents API](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/documentos/api.ts): `frontend/src/modules/documentos/api.ts`
- [Shelter API](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/frontend/src/modules/albergue/api/albergue-api.ts): `frontend/src/modules/albergue/api/albergue-api.ts`
- [Shelter routes](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/albergue/albergue.controller.ts): `src/modules/albergue/albergue.controller.ts`
- [Shelter service](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/albergue/albergue.service.ts): `src/modules/albergue/albergue.service.ts`
- [Document routes](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/documentos.controller.ts): `src/modules/documentos/documentos.controller.ts`
- [Document services](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/documentos.service.ts): `src/modules/documentos/documentos.service.ts`
- [PDF upload](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/modules/documentos/carga-pdf.service.ts): `src/modules/documentos/carga-pdf.service.ts`

### API platform

- **PostgreSQL**
- [Nest application](https://github.com/edujrubm/sistema-nuevos-horizontes/blob/main/src/app.module.ts): `src/app.module.ts`

### Other components

- **Staff user**

## Connections

- Staff user → Route dispatch: opens screens (evidence: `frontend/src/app/router/router.tsx`)
- Route dispatch → Beneficiary screens: routes to (evidence: `frontend/src/app/router/router.tsx`)
- Route dispatch → Admission wizard: routes to (evidence: `frontend/src/app/router/router.tsx`)
- Route dispatch → Case forms and evolution: routes to (evidence: `frontend/src/app/router/router.tsx`)
- Route dispatch → Document screens: routes to (evidence: `frontend/src/app/router/router.tsx`)
- Route dispatch → Shelter screens: routes to (evidence: `frontend/src/app/router/router.tsx`)
- Document screens → Documents API: uses (evidence: `frontend/src/modules/documentos/DocumentsPage.tsx`)
- Document screens → PDF upload: renders upload field (evidence: `frontend/src/modules/documentos/DocumentsPage.tsx`)
- Beneficiary routes → Beneficiary service: calls (evidence: `src/modules/beneficiarias/beneficiarias.controller.ts`)
- Initial record routes → Initial record service: calls (evidence: `src/modules/ficha-inicial/ficha-inicial.controller.ts`)
- Shelter routes → Shelter service: calls (evidence: `src/modules/albergue/albergue.controller.ts`)
- Document routes → Document services: calls (evidence: `src/modules/documentos/documentos.controller.ts`)
- Document routes → PDF upload: dispatches upload (evidence: `src/modules/documentos/documentos.controller.ts`)
- Persona3 and evolution routes → Persona3 service: handles requests (evidence: `src/modules/evolucion/evolucion.controller.ts`)
- Nest application → PostgreSQL: uses database (evidence: `README.md`)
