# Análisis Técnico del Repositorio: Carpeta Ciudadana Backend

##### **Información General**

Nombre del Proyecto: Carpeta Ciudadana Backend  
Repositorio: [github.com/ogticrd/carpeta-ciudadana-backend](https://github.com/ogticrd/carpeta-ciudadana-backend)

El backend centraliza la lógica de notificaciones y cuenta con un componente llamado "wrapper" que agrupa a las instituciones que funcionan de forma similar, como los ayuntamientos, las empresas distribuidoras de electricidad (EDES), y las compañías de agua. Esto permite manejar todas estas entidades de manera unificada, evitando realizar múltiples peticiones separadas para cada una y optimizando así la comunicación y el rendimiento del sistema.

<table id="bkmrk-elemento-descripci%C3%B3n"><thead><tr><th>Elemento</th><th>Descripción</th></tr></thead><tbody><tr><td>**Arquitectura**</td><td>Microservicios</td></tr><tr><td>**Framework principal**</td><td>[NestJS](https://nestjs.com/)</td></tr><tr><td>**Lenguaje**</td><td>TypeScript</td></tr><tr><td>**Comunicación entre servicios**</td><td>gRPC</td></tr><tr><td>**Contenedores**</td><td>Docker, `docker-compose`, múltiples Dockerfiles</td></tr><tr><td>**Gestión de paquetes**</td><td>npm/yarn</td></tr><tr><td>**Infraestructura como código**</td><td>`docker-compose.yml`, múltiples archivos de entorno (`.env.example`)</td></tr></tbody></table>

##### **Análisis de Microservicios**

<table id="bkmrk-microservicio-funcio"><thead><tr><th>Microservicio</th><th>Funcionalidad</th></tr></thead><tbody><tr><td>**gateway**</td><td>Punto de entrada, autenticación, health check, orquestación general</td></tr><tr><td>**metadata**</td><td>Gestión de usuarios, sesiones, OTPs, suscripciones de notificación</td></tr><tr><td>**notification**</td><td>Envío y manejo de notificaciones, workflows</td></tr><tr><td>**wrapper-institutions**</td><td>Integración con instituciones (ej. JCE, Edesur, pasaportes)</td></tr></tbody></table>

##### **DevOps / Automatización**

<table id="bkmrk-elemento-descripci%C3%B3n-1"><thead><tr><th>Elemento</th><th>Descripción</th></tr></thead><tbody><tr><td>**CI/CD**</td><td>Workflows por microservicio (`gateway-deployment.yml`, etc.)</td></tr><tr><td>**Limpieza de caché**</td><td>`cleanup-cache-branch.yml` para mantener el entorno limpio</td></tr><tr><td>**Dependabot**</td><td>Actualización automática de dependencias (`dependabot.yml`)</td></tr><tr><td>**Entornos definidos**</td><td>`.env.example`, `development.Dockerfile`, múltiples `Dockerfile`</td></tr><tr><td>**Linting y Formateo**</td><td>`.eslintrc.js`, `.prettierrc`, uso de [Biome](https://biomejs.dev/)</td></tr><tr><td>**Debugging**</td><td>Archivos `.vscode/launch.json` en cada microservicio</td></tr></tbody></table>

##### **Análisis de Workflows CI/CD (`.github/workflows/`)**

<table id="bkmrk-archivo-descripci%C3%B3n-"><thead><tr><th>**Archivo**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**cleanup-cache-branch.yml**</td><td>**Limpia las cachés asociadas a una Pull Request (PR)** cuando esta es cerrada.</td></tr><tr><td>**gateway-deployment.yml**</td><td>Este archivo parece estar relacionado con el **despliegue del Gateway**. </td></tr><tr><td>**metadata-deployment.yml**</td><td>Este archivo probablemente gestiona el **despliegue del microservicio Metadata**. La última actualización sugiere que se corrigió alguna cuestión relacionada con el entorno de producción.</td></tr><tr><td>**notification-deployment.yml**</td><td>Relacionado con el **despliegue del microservicio Notification**. La última actualización menciona la integración o actualización con **Novu** (probablemente una plataforma de notificaciones).</td></tr><tr><td>**wrapper-institutions-deployment.yml**</td><td>Este archivo gestiona el despliegue de **Wrapper Institutions**, que probablemente interactúa con servicios externos o APIs de instituciones gubernamentales.</td></tr></tbody></table>

##### **Control de Calidad**

<table id="bkmrk-elemento-detalles-fr"><thead><tr><th>Elemento</th><th>Detalles</th></tr></thead><tbody><tr><td>**Framework de testing**</td><td>`jest`</td></tr><tr><td>**Tipo de pruebas**</td><td>`e2e` (end-to-end), ejemplos: `app.e2e-spec.ts`</td></tr><tr><td>**Cobertura**</td><td>Se encuentran `*.spec.ts` para pruebas unitarias (ej: `*.service.spec.ts`)</td></tr></tbody></table>

##### **Seguridad**

<table id="bkmrk-elemento-descripci%C3%B3n-2"><thead><tr><th>Elemento</th><th>Descripción</th></tr></thead><tbody><tr><td>**API Key Middleware**</td><td>`auth/api-key.middleware.ts` (wrapper-institutions)</td></tr><tr><td>**Manejo de tokens OTP**</td><td>Varios microservicios trabajan con OTPs y suscripciones seguras</td></tr><tr><td>**Entornos seguros**</td><td>`.env.example` usado en todos los servicios</td></tr><tr><td>**Dependabot**</td><td>Protege contra vulnerabilidades de paquetes</td></tr><tr><td>**Sin SonarQube**</td><td>No se encontró integración con SonarQube</td></tr></tbody></table>

##### **Herramientas y Librerías Detectadas**

<table id="bkmrk-tipo-herramientas-%2F-"><thead><tr><th>Tipo</th><th>Herramientas / Librerías</th></tr></thead><tbody><tr><td>**Backend Framework**</td><td>NestJS</td></tr><tr><td>**Contenedores**</td><td>Docker, Docker Compose</td></tr><tr><td>**Proto/gRPC**</td><td>Archivos `.proto` para cada servicio</td></tr><tr><td>**Lint/Formato**</td><td>ESLint, Prettier, Biome</td></tr><tr><td>**Tests**</td><td>Jest</td></tr><tr><td>**Gestión de paquetes**</td><td>Yarn o npm</td></tr><tr><td>**VSCode Dev Env**</td><td>`.vscode` en todos los servicios</td></tr></tbody></table>

##### **Documentación**

<table id="bkmrk-secci%C3%B3n-contenido-de"><thead><tr><th>Sección</th><th>Contenido Detectado</th></tr></thead><tbody><tr><td>Introducción</td><td>Describe brevemente el propósito del backend: “simplificar la gestión de documentos y trámites ciudadanos”.</td></tr><tr><td>Arquitectura</td><td>Enumera los microservicios (gateway, metadata, notification, wrapper-institutions) y explica sus responsabilidades.</td></tr><tr><td>Tecnologías</td><td>Menciona NestJS, TypeScript y gRPC como stack principal.</td></tr></tbody></table>