# bale-e/back_y_front architecture

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

## Overview

InaGo is an indoor campus wayfinding application: users search for a room or service, choose a destination, and view a route over a 3D building map. The backend exposes authenticated APIs for building/location catalog management and route calculation; route responses can be enriched with waypoints, arrows, and a smoothed line. The Angular client fetches campus data and renders interactive floors and navigation. The README documents A* and Firestore-backed navigation; where their internal call wiring was not shown, those links are omitted or marked unverified.

Main entry points: [`frontend/src/app/map3d/services/map-navigation.service.ts`](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/services/map-navigation.service.ts) (Map Navigation), [`backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js`](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js) (Navigation Controller), [`frontend/src/app/services/espacios-api.service.ts`](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/services/espacios-api.service.ts) (Spaces API Client), [`backEnd/src/modules/api/infrastructure/routes/edificios.routes.js`](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/edificios.routes.js) (Building Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Angular Client"]
  node_app["Application Shell<br/>[app.component.ts]"]
  node_search["Destination Search"]
  node_mapnav["Map Navigation"]
  node_scene["3D Scene"]
  node_registry["Building Registry"]
  node_admin["Building Admin"]
  node_spacesclient["Spaces API Client"]
  node_navclient["Navigation API Client"]
end

subgraph group_http["HTTP API"]
  node_edroutes["Building Routes"]
  node_locroutes["Location Routes"]
  node_navroutes["Navigation Routes"]
  node_edcontroller["Building Controller"]
  node_loccontroller["Location Controller"]
  node_navcontroller["Navigation Controller"]
end

subgraph group_spaces["Space Catalog"]
  node_spacecases["Space Use Cases"]
  node_edrepo[("Building Repository")]
  node_locrepo[("Location Repository")]
end

subgraph group_routing["Route Navigation"]
  node_routecase["Route Calculation"]
  node_routevisual["Route Visualization"]
  node_navrepo[("Navigation Repository")]
end

subgraph group_shared["Data Infrastructure"]
  node_firestore[("Firebase Admin<br/>[firebaseAdmin.js]")]
  node_cache["Memory Cache"]
end

node_visitor(("Campus Visitor"))

node_visitor -.->|"searches destinations"| node_search
node_search -.->|"selects destination"| node_mapnav
node_app -->|"loads buildings"| node_spacesclient
node_mapnav -->|"fetches spaces"| node_spacesclient
node_mapnav -->|"requests routes"| node_navclient
node_mapnav -->|"reads building data"| node_registry
node_scene -->|"reads building data"| node_registry
node_scene -.->|"renders navigation"| node_mapnav
node_admin -->|"manages buildings"| node_spacesclient
node_spacesclient -.->|"requests catalog"| node_edroutes
node_navclient -.->|"requests routes"| node_navroutes
node_edroutes -->|"dispatches"| node_edcontroller
node_edroutes -->|"dispatches"| node_loccontroller
node_locroutes -->|"dispatches"| node_loccontroller
node_navroutes -->|"dispatches"| node_navcontroller
node_edcontroller -->|"executes cases"| node_spacecases
node_loccontroller -->|"executes search"| node_spacecases
node_edcontroller -->|"constructs cases"| node_edrepo
node_navcontroller -->|"calculates route"| node_routecase
node_navcontroller -->|"builds visualization"| node_routevisual
node_navcontroller -->|"reads paths"| node_navrepo
node_edrepo -->|"reads documents"| node_firestore
node_locrepo -.->|"reads documents"| node_firestore
node_navrepo -->|"reads paths"| node_firestore
node_edrepo -->|"uses cache"| node_cache
node_locrepo -->|"uses cache"| node_cache
node_navrepo -->|"uses cache"| node_cache

click node_app "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/app.component.ts"
click node_search "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/components/map-search/map-search.component.ts"
click node_mapnav "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/services/map-navigation.service.ts"
click node_scene "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/services/babylon-scene.service.ts"
click node_registry "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/core/services/building-registry.service.ts"
click node_admin "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/admin/admin-panel.component.ts"
click node_spacesclient "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/services/espacios-api.service.ts"
click node_navclient "https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/services/navegacion-api.service.ts"
click node_edroutes "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/edificios.routes.js"
click node_locroutes "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/locaciones.routes.js"
click node_navroutes "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/navegacion.routes.js"
click node_edcontroller "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/EdificiosController.js"
click node_loccontroller "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/LocacionesController.js"
click node_navcontroller "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js"
click node_spacecases "https://github.com/bale-e/back_y_front/tree/main/backEnd/src/modules/gestion_espacios/application/use-cases"
click node_edrepo "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreEdificioRepository.js"
click node_locrepo "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreLocacionRepository.js"
click node_routecase "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/sistema_navegacion/application/use-cases/CalcularRutaUseCase.js"
click node_routevisual "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/visualizacion_mapa/application/use-cases/GenerarVisualizacionRutaUseCase.js"
click node_navrepo "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/sistema_navegacion/infrastructure/repositories/FirestoreNavigationRepository.js"
click node_firestore "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/shared/infrastructure/firebase/firebaseAdmin.js"
click node_cache "https://github.com/bale-e/back_y_front/blob/main/backEnd/src/shared/infrastructure/cache/MemoryCacheAdapter.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_search,node_mapnav,node_scene,node_registry,node_admin,node_spacesclient,node_navclient toneBlue
class node_edroutes,node_locroutes,node_navroutes,node_edcontroller,node_loccontroller,node_navcontroller toneAmber
class node_spacecases,node_edrepo,node_locrepo toneMint
class node_routecase,node_routevisual,node_navrepo toneRose
class node_firestore,node_cache,node_visitor toneIndigo
```

## Components

### Angular Client

- [Application Shell](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/app.component.ts): `frontend/src/app/app.component.ts`
- [Destination Search](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/components/map-search/map-search.component.ts): `frontend/src/app/map3d/components/map-search/map-search.component.ts`
- [Map Navigation](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/services/map-navigation.service.ts): `frontend/src/app/map3d/services/map-navigation.service.ts`
- [3D Scene](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/map3d/services/babylon-scene.service.ts): `frontend/src/app/map3d/services/babylon-scene.service.ts`
- [Building Registry](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/core/services/building-registry.service.ts): `frontend/src/app/core/services/building-registry.service.ts`
- [Building Admin](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/admin/admin-panel.component.ts): `frontend/src/app/admin/admin-panel.component.ts`
- [Spaces API Client](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/services/espacios-api.service.ts): `frontend/src/app/services/espacios-api.service.ts`
- [Navigation API Client](https://github.com/bale-e/back_y_front/blob/main/frontend/src/app/services/navegacion-api.service.ts): `frontend/src/app/services/navegacion-api.service.ts`

### HTTP API

- [Building Routes](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/edificios.routes.js): `backEnd/src/modules/api/infrastructure/routes/edificios.routes.js`
- [Location Routes](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/locaciones.routes.js): `backEnd/src/modules/api/infrastructure/routes/locaciones.routes.js`
- [Navigation Routes](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/routes/navegacion.routes.js): `backEnd/src/modules/api/infrastructure/routes/navegacion.routes.js`
- [Building Controller](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/EdificiosController.js): `backEnd/src/modules/api/infrastructure/controllers/EdificiosController.js`
- [Location Controller](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/LocacionesController.js): `backEnd/src/modules/api/infrastructure/controllers/LocacionesController.js`
- [Navigation Controller](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js): `backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js`

### Space Catalog

- [Space Use Cases](https://github.com/bale-e/back_y_front/tree/main/backEnd/src/modules/gestion_espacios/application/use-cases): `backEnd/src/modules/gestion_espacios/application/use-cases`
- [Building Repository](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreEdificioRepository.js): `backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreEdificioRepository.js`
- [Location Repository](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreLocacionRepository.js): `backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreLocacionRepository.js`

### Route Navigation

- [Route Calculation](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/sistema_navegacion/application/use-cases/CalcularRutaUseCase.js): `backEnd/src/modules/sistema_navegacion/application/use-cases/CalcularRutaUseCase.js`
- [Route Visualization](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/visualizacion_mapa/application/use-cases/GenerarVisualizacionRutaUseCase.js): `backEnd/src/modules/visualizacion_mapa/application/use-cases/GenerarVisualizacionRutaUseCase.js`
- [Navigation Repository](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/modules/sistema_navegacion/infrastructure/repositories/FirestoreNavigationRepository.js): `backEnd/src/modules/sistema_navegacion/infrastructure/repositories/FirestoreNavigationRepository.js`

### Data Infrastructure

- [Firebase Admin](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/shared/infrastructure/firebase/firebaseAdmin.js): `backEnd/src/shared/infrastructure/firebase/firebaseAdmin.js`
- [Memory Cache](https://github.com/bale-e/back_y_front/blob/main/backEnd/src/shared/infrastructure/cache/MemoryCacheAdapter.js): `backEnd/src/shared/infrastructure/cache/MemoryCacheAdapter.js`

### Other components

- **Campus Visitor**

## Connections

- Campus Visitor → Destination Search: searches destinations (evidence: `README.md`)
- Destination Search → Map Navigation: selects destination
- Application Shell → Spaces API Client: loads buildings (evidence: `frontend/src/app/app.component.ts`)
- Map Navigation → Spaces API Client: fetches spaces (evidence: `frontend/src/app/map3d/services/map-navigation.service.ts`)
- Map Navigation → Navigation API Client: requests routes (evidence: `frontend/src/app/map3d/services/map-navigation.service.ts`)
- Map Navigation → Building Registry: reads building data (evidence: `frontend/src/app/map3d/services/map-navigation.service.ts`)
- 3D Scene → Building Registry: reads building data (evidence: `frontend/src/app/map3d/services/babylon-scene.service.ts`)
- 3D Scene → Map Navigation: renders navigation
- Building Admin → Spaces API Client: manages buildings (evidence: `frontend/src/app/admin/admin-panel.component.ts`)
- Spaces API Client → Building Routes: requests catalog (evidence: `README.md`)
- Navigation API Client → Navigation Routes: requests routes (evidence: `README.md`)
- Building Routes → Building Controller: dispatches (evidence: `backEnd/src/modules/api/infrastructure/routes/edificios.routes.js`)
- Building Routes → Location Controller: dispatches (evidence: `backEnd/src/modules/api/infrastructure/routes/edificios.routes.js`)
- Location Routes → Location Controller: dispatches (evidence: `backEnd/src/modules/api/infrastructure/routes/locaciones.routes.js`)
- Navigation Routes → Navigation Controller: dispatches (evidence: `backEnd/src/app.js`)
- Building Controller → Space Use Cases: executes cases (evidence: `backEnd/src/modules/api/infrastructure/controllers/EdificiosController.js`)
- Location Controller → Space Use Cases: executes search (evidence: `backEnd/src/modules/api/infrastructure/controllers/LocacionesController.js`)
- Building Controller → Building Repository: constructs cases (evidence: `backEnd/src/modules/api/infrastructure/controllers/EdificiosController.js`)
- Navigation Controller → Route Calculation: calculates route (evidence: `backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js`)
- Navigation Controller → Route Visualization: builds visualization (evidence: `backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js`)
- Navigation Controller → Navigation Repository: reads paths (evidence: `backEnd/src/modules/api/infrastructure/controllers/NavegacionController.js`)
- Building Repository → Firebase Admin: reads documents (evidence: `backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreEdificioRepository.js`)
- Location Repository → Firebase Admin: reads documents
- Navigation Repository → Firebase Admin: reads paths (evidence: `backEnd/src/modules/sistema_navegacion/infrastructure/repositories/FirestoreNavigationRepository.js`)
- Building Repository → Memory Cache: uses cache (evidence: `backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreEdificioRepository.js`)
- Location Repository → Memory Cache: uses cache (evidence: `backEnd/src/modules/gestion_espacios/infrastructure/repositories/FirestoreLocacionRepository.js`)
- Navigation Repository → Memory Cache: uses cache (evidence: `backEnd/src/modules/sistema_navegacion/infrastructure/repositories/FirestoreNavigationRepository.js`)
