# carlmors/mapa-talento-front architecture

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

- Interactive diagram: https://gitdiagram.com/carlmors/mapa-talento-front
- Repository: https://github.com/carlmors/mapa-talento-front

## Overview

MAPA TALENTO - 360 is an ETB human-resources portal with session-aware routes for employees, administrators, and emergency managers. The main workflow identifies the user, selects the authorized profile experience, and uses feature APIs to retrieve or update records. Employee capabilities include dynamic profile forms, family and education records, profile photos, and consent management; other routes support administration and census operations. The excerpts show application routing, service construction, and shared HTTP behavior; several feature internals are unsampled, so their detailed call paths are omitted.

Main entry points: [`src/app/App.tsx`](https://github.com/carlmors/mapa-talento-front/blob/main/src/app/App.tsx) (Portal router), [`src/app/servicios.ts`](https://github.com/carlmors/mapa-talento-front/blob/main/src/app/servicios.ts) (Service factory), [`src/shared/api/cliente.ts`](https://github.com/carlmors/mapa-talento-front/blob/main/src/shared/api/cliente.ts) (HTTP client), [`src/features/colaborador/ui/FormularioCampos.tsx`](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/FormularioCampos.tsx) (Dynamic forms)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application and session"]
  node_app["Portal router<br/>[App.tsx]"]
  node_access["Access screen<br/>[PantallaAcceso.tsx]"]
  node_session["Session domain<br/>[sesion.ts]"]
end

subgraph group_employee["Employee experience"]
  node_employee_experience["Employee profile"]
  node_dynamic_forms["Dynamic forms"]
  node_field_definitions["Field definitions<br/>[tipos.ts]"]
  node_family_records["Family records<br/>[GrupoFamiliar.tsx]"]
  node_education_records["Education review"]
  node_profile_photo["Profile photo<br/>[useFotoPerfil.ts]"]
  node_consent_ui["Consent management"]
  node_consent_policy["Consent policy<br/>[politica.ts]"]
end

subgraph group_operations["Operational roles"]
  node_admin_ui["Admin panel"]
  node_emergency_ui["Census inbox<br/>[BandejaCenso.tsx]"]
end

subgraph group_services["Services and transport"]
  node_services_context["Service context"]
  node_service_factory["Service factory<br/>[servicios.ts]"]
  node_collaborator_api["Employee API"]
  node_admin_api["Admin API"]
  node_census_api["Census API<br/>[httpCensoApi.ts]"]
  node_session_api["Session API<br/>[httpSesionApi.ts]"]
  node_etb_integration["ETB integration"]
  node_http_client["HTTP client<br/>[cliente.ts]"]
  node_memory_token["Memory token<br/>[tokenEnMemoria.ts]"]
end

node_user(("Portal user"))
node_backend[("Portal backend")]

node_user -->|"opens portal"| node_app
node_app -->|"renders access"| node_access
node_app -->|"routes employee"| node_employee_experience
node_app -->|"routes consent"| node_consent_ui
node_app -->|"routes admin"| node_admin_ui
node_app -->|"routes census"| node_emergency_ui
node_employee_experience -->|"renders forms"| node_dynamic_forms
node_dynamic_forms -->|"uses definitions"| node_field_definitions
node_family_records -->|"renders forms"| node_dynamic_forms
node_education_records -->|"renders forms"| node_dynamic_forms
node_consent_ui -->|"uses policy"| node_consent_policy
node_app -->|"reads services"| node_services_context
node_services_context -->|"types services"| node_service_factory
node_service_factory -->|"creates adapter"| node_collaborator_api
node_service_factory -->|"creates adapter"| node_admin_api
node_service_factory -->|"creates adapter"| node_census_api
node_service_factory -->|"creates adapter"| node_session_api
node_service_factory -->|"creates integration"| node_etb_integration
node_service_factory -->|"creates client"| node_http_client
node_collaborator_api -->|"sends requests"| node_http_client
node_admin_api -->|"sends requests"| node_http_client
node_census_api -->|"sends requests"| node_http_client
node_etb_integration -->|"sends requests"| node_http_client
node_http_client -->|"reads token"| node_memory_token
node_http_client -->|"sends HTTP"| node_backend

click node_app "https://github.com/carlmors/mapa-talento-front/blob/main/src/app/App.tsx"
click node_access "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/ui/PantallaAcceso.tsx"
click node_session "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/domain/sesion.ts"
click node_services_context "https://github.com/carlmors/mapa-talento-front/blob/main/src/app/ServiciosContext.tsx"
click node_service_factory "https://github.com/carlmors/mapa-talento-front/blob/main/src/app/servicios.ts"
click node_employee_experience "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/ExperienciaColaborador.tsx"
click node_dynamic_forms "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/FormularioCampos.tsx"
click node_field_definitions "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/fields/tipos.ts"
click node_family_records "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/familia/GrupoFamiliar.tsx"
click node_education_records "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/formacion/RevisionFormacion.tsx"
click node_profile_photo "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/useFotoPerfil.ts"
click node_consent_ui "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/consentimientos/ui/MisAutorizaciones.tsx"
click node_consent_policy "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/consentimientos/domain/politica.ts"
click node_admin_ui "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/administrador/ui/PanelAdministrador.tsx"
click node_emergency_ui "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/emergencia/ui/BandejaCenso.tsx"
click node_collaborator_api "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/api/httpColaboradorApi.ts"
click node_admin_api "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/administrador/api/httpAdministradorApi.ts"
click node_census_api "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/censo/api/httpCensoApi.ts"
click node_session_api "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/api/httpSesionApi.ts"
click node_etb_integration "https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/api/integracionEtbApi.ts"
click node_http_client "https://github.com/carlmors/mapa-talento-front/blob/main/src/shared/api/cliente.ts"
click node_memory_token "https://github.com/carlmors/mapa-talento-front/blob/main/src/shared/api/tokenEnMemoria.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,node_access,node_session,node_user toneBlue
class node_employee_experience,node_dynamic_forms,node_field_definitions,node_family_records,node_education_records,node_profile_photo,node_consent_ui,node_consent_policy,node_backend toneAmber
class node_admin_ui,node_emergency_ui toneMint
class node_services_context,node_service_factory,node_collaborator_api,node_admin_api,node_census_api,node_session_api,node_etb_integration,node_http_client,node_memory_token toneRose
```

## Components

### Application and session

- [Portal router](https://github.com/carlmors/mapa-talento-front/blob/main/src/app/App.tsx): `src/app/App.tsx`
- [Access screen](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/ui/PantallaAcceso.tsx): `src/features/sesion/ui/PantallaAcceso.tsx`
- [Session domain](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/domain/sesion.ts): `src/features/sesion/domain/sesion.ts`

### Employee experience

- [Employee profile](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/ExperienciaColaborador.tsx): `src/features/colaborador/ui/ExperienciaColaborador.tsx`
- [Dynamic forms](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/FormularioCampos.tsx): `src/features/colaborador/ui/FormularioCampos.tsx`
- [Field definitions](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/fields/tipos.ts): `src/features/colaborador/fields/tipos.ts`
- [Family records](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/familia/GrupoFamiliar.tsx): `src/features/colaborador/familia/GrupoFamiliar.tsx`
- [Education review](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/formacion/RevisionFormacion.tsx): `src/features/colaborador/formacion/RevisionFormacion.tsx`
- [Profile photo](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/ui/useFotoPerfil.ts): `src/features/colaborador/ui/useFotoPerfil.ts`
- [Consent management](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/consentimientos/ui/MisAutorizaciones.tsx): `src/features/consentimientos/ui/MisAutorizaciones.tsx`
- [Consent policy](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/consentimientos/domain/politica.ts): `src/features/consentimientos/domain/politica.ts`

### Operational roles

- [Admin panel](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/administrador/ui/PanelAdministrador.tsx): `src/features/administrador/ui/PanelAdministrador.tsx`
- [Census inbox](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/emergencia/ui/BandejaCenso.tsx): `src/features/emergencia/ui/BandejaCenso.tsx`

### Services and transport

- [Service context](https://github.com/carlmors/mapa-talento-front/blob/main/src/app/ServiciosContext.tsx): `src/app/ServiciosContext.tsx`
- [Service factory](https://github.com/carlmors/mapa-talento-front/blob/main/src/app/servicios.ts): `src/app/servicios.ts`
- [Employee API](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/colaborador/api/httpColaboradorApi.ts): `src/features/colaborador/api/httpColaboradorApi.ts`
- [Admin API](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/administrador/api/httpAdministradorApi.ts): `src/features/administrador/api/httpAdministradorApi.ts`
- [Census API](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/censo/api/httpCensoApi.ts): `src/features/censo/api/httpCensoApi.ts`
- [Session API](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/api/httpSesionApi.ts): `src/features/sesion/api/httpSesionApi.ts`
- [ETB integration](https://github.com/carlmors/mapa-talento-front/blob/main/src/features/sesion/api/integracionEtbApi.ts): `src/features/sesion/api/integracionEtbApi.ts`
- [HTTP client](https://github.com/carlmors/mapa-talento-front/blob/main/src/shared/api/cliente.ts): `src/shared/api/cliente.ts`
- [Memory token](https://github.com/carlmors/mapa-talento-front/blob/main/src/shared/api/tokenEnMemoria.ts): `src/shared/api/tokenEnMemoria.ts`

### Other components

- **Portal user**
- **Portal backend**

## Connections

- Portal user → Portal router: opens portal (evidence: `src/app/App.tsx`)
- Portal router → Access screen: renders access (evidence: `src/app/App.tsx`)
- Portal router → Employee profile: routes employee (evidence: `src/app/App.tsx`)
- Portal router → Consent management: routes consent (evidence: `src/app/App.tsx`)
- Portal router → Admin panel: routes admin (evidence: `src/app/App.tsx`)
- Portal router → Census inbox: routes census (evidence: `src/app/App.tsx`)
- Employee profile → Dynamic forms: renders forms (evidence: `src/features/colaborador/ui/FormularioCampos.tsx`)
- Dynamic forms → Field definitions: uses definitions (evidence: `src/features/colaborador/ui/FormularioCampos.tsx`)
- Family records → Dynamic forms: renders forms (evidence: `src/features/colaborador/familia/GrupoFamiliar.tsx`)
- Education review → Dynamic forms: renders forms (evidence: `src/features/colaborador/formacion/RevisionFormacion.tsx`)
- Consent management → Consent policy: uses policy (evidence: `src/features/consentimientos/ui/MisAutorizaciones.tsx`)
- Portal router → Service context: reads services (evidence: `src/app/App.tsx`)
- Service context → Service factory: types services (evidence: `src/app/ServiciosContext.tsx`)
- Service factory → Employee API: creates adapter (evidence: `src/app/servicios.ts`)
- Service factory → Admin API: creates adapter (evidence: `src/app/servicios.ts`)
- Service factory → Census API: creates adapter (evidence: `src/app/servicios.ts`)
- Service factory → Session API: creates adapter (evidence: `src/app/servicios.ts`)
- Service factory → ETB integration: creates integration (evidence: `src/app/servicios.ts`)
- Service factory → HTTP client: creates client (evidence: `src/app/servicios.ts`)
- Employee API → HTTP client: sends requests (evidence: `src/features/colaborador/api/httpColaboradorApi.ts`)
- Admin API → HTTP client: sends requests (evidence: `src/features/administrador/api/httpAdministradorApi.ts`)
- Census API → HTTP client: sends requests (evidence: `src/features/censo/api/httpCensoApi.ts`)
- ETB integration → HTTP client: sends requests (evidence: `src/features/sesion/api/integracionEtbApi.ts`)
- HTTP client → Memory token: reads token (evidence: `src/shared/api/cliente.ts`)
- HTTP client → Portal backend: sends HTTP (evidence: `src/shared/api/cliente.ts`)
