# Repositorios Carpeta Ciudadana (Soy Yo)

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

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

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

Una **aplicación móvil** destinada a los **ciudadanos** para interactuar con servicios digitales del gobierno.

<table id="bkmrk-elemento-observacion"><thead><tr><th>Elemento</th><th>Observaciones</th></tr></thead><tbody><tr><td>`.github/`</td><td>Contiene workflows de GitHub Actions (CI/CD). Se menciona una tarea de *cleanup cache*, lo que sugiere optimización de builds.</td></tr><tr><td>`src/`</td><td>Carpeta principal de código fuente. Cambios recientes sugieren mantenimiento activo.</td></tr><tr><td>`assets/`, `accests/`</td><td>Dos carpetas similares; podría haber una confusión de nombres o duplicación. Revisar si ambas son necesarias.</td></tr><tr><td>`.env.example`, `.env.local`</td><td>Uso de variables de entorno. Correcta separación entre variables públicas y privadas. Incluye integración con Sentry.</td></tr><tr><td>`App.tsx`</td><td>Proyecto basado en React Native (o React + Expo). Componente raíz de la app.</td></tr><tr><td>`Dockerfile`</td><td>Soporte para contenerización. Permite pruebas y despliegue estandarizado.</td></tr><tr><td>`GoogleService-Info.plist` / `google-services.json`</td><td>Indica integración con Firebase tanto para iOS como Android. Muy común en apps móviles.</td></tr><tr><td>`babel.config.js`, `metro.config.js`</td><td>Configuración típica de React Native.</td></tr><tr><td>`eas.json`</td><td>Archivo de configuración de EAS (Expo Application Services). Se usa para builds y actualizaciones OTA.</td></tr><tr><td>`package.json`, `tsconfig.json`</td><td>Proyecto en TypeScript, bien estructurado.</td></tr></tbody></table>



##### **Stack Tecnológico**

<table id="bkmrk-elemento-descripci%C3%B3n"><thead><tr><th>Elemento</th><th>Descripción</th></tr></thead><tbody><tr><td>**Framework base**</td><td>[React Native](https://reactnative.dev/)</td></tr><tr><td>**Entorno móvil**</td><td>[Expo](https://expo.dev/) con EAS (Expo Application Services)</td></tr><tr><td>**Lenguaje**</td><td>TypeScript</td></tr><tr><td>**Gestión de estado**</td><td>Redux Toolkit + React Query</td></tr><tr><td>**Navegación**</td><td>React Navigation</td></tr><tr><td>**Firebase**</td><td>Integrado (push notifications, auth, etc.)</td></tr><tr><td>**Feature flags**</td><td>Unleash + GrowthBook</td></tr><tr><td>**Autenticación**</td><td>Expo Auth Session, Firebase, LocalAuth</td></tr><tr><td>**Observabilidad**</td><td>Sentry</td></tr><tr><td>**Fuentes**</td><td>Google Fonts (Poppins)</td></tr></tbody></table>



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

<table id="bkmrk-%C3%81rea-herramienta%2Farc" style="width: 100%;"><thead><tr><th style="width: 17.8742%;">Área</th><th style="width: 18.7065%;">Herramienta/Archivo</th><th style="width: 63.3955%;">Comentarios</th></tr></thead><tbody><tr><td style="width: 17.8742%;">**CI/CD**</td><td style="width: 18.7065%;">`.github/workflows` (presente)</td><td style="width: 63.3955%;">GitHub Actions configurado (ej. limpieza de caché, tests)</td></tr><tr><td style="width: 17.8742%;">**Contenedores**</td><td style="width: 18.7065%;">`Dockerfile`</td><td style="width: 63.3955%;">Contenedor de pruebas configurado</td></tr><tr><td style="width: 17.8742%;">**Reset de entorno**</td><td style="width: 18.7065%;">`"reset-project"`</td><td style="width: 63.3955%;">Script personalizado (`./scripts/reset-project.js`) para reinicio de entorno. Declarado pero no se encontró el archivo – revisar si existe.</td></tr><tr><td style="width: 17.8742%;">**EAS (Expo Application Services)**</td><td style="width: 18.7065%;">`eas.json`</td><td style="width: 63.3955%;">Integración con EAS: build y deployment OTA para móviles</td></tr><tr><td style="width: 17.8742%;">**Seguridad**</td><td style="width: 18.7065%;"><table><tbody><tr><td data-col-size="md" data-end="1831" data-start="1780">`dependabot.yml`</td></tr></tbody></table>

</td><td style="width: 63.3955%;">Monitoreo automático de versiones y alertas</td></tr></tbody></table>



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

<table id="bkmrk-archivo-de-workflow-"><thead><tr><th>Archivo de Workflow</th><th>Propósito</th><th>Herramientas clave</th><th>Estado</th></tr></thead><tbody><tr><td>`ci-check-linters.yml`</td><td>Ejecuta linters para mantener calidad de código</td><td>`eslint`, posiblemente `expo lint`</td><td>Activo y útil para calidad</td></tr><tr><td>`cleanup-cache-branch.yml`</td><td>Limpia la caché de branches antiguas o cerradas</td><td>`actions/github-script`, `cache`</td><td>Mantenimiento automatizado</td></tr><tr><td>`preview-deployment.yml`</td><td>Despliega versiones de preview (probablemente PRs)</td><td>`Expo`, `EAS`, o similar</td><td>Muy útil para validaciones previas</td></tr><tr><td>`preview-deployment-slack-pr.yml`</td><td>Notifica en Slack sobre despliegues de preview</td><td>`slackapi/slack-github-action`</td><td>Integración con Slack para visibilidad</td></tr></tbody></table>



##### **Calidad del Código**

<table id="bkmrk-herramienta-presenci"><thead><tr><th>Herramienta</th><th>Presencia</th><th>Comentarios</th></tr></thead><tbody><tr><td>**ESLint**</td><td>Detectado</td><td>Usa `@typescript-eslint`, `eslint-config-expo`</td></tr><tr><td>**Prettier**</td><td>No explícitamente declarado</td><td>  
</td></tr><tr><td>**Análisis estático**</td><td>No SonarQube u otra herramienta detectada</td><td> </td></tr><tr><td>**Depuración de dependencias**</td><td>Detectado</td><td>Usa `depcheck` y `unimported` para limpiar dependencias no usadas</td></tr></tbody></table>

##### **Seguridad**

<table id="bkmrk-elemento-presencia-c"><thead><tr><th>Elemento</th><th>Presencia</th><th>Comentarios</th></tr></thead><tbody><tr><td>`.env.example`</td><td>Si</td><td>Correcto uso para variables de entorno públicas</td></tr><tr><td>`.env.local`</td><td>Si</td><td>Presente en el repo (riesgo si contiene claves)</td></tr><tr><td>**Sentry**</td><td>Si</td><td>Integración con `@sentry/react-native`</td></tr><tr><td>**Control de calidad estático (SAST)**</td><td>NO</td><td>No detectado. Recomendado para escaneo de vulnerabilidades</td></tr><tr><td> </td><td> </td><td> </td></tr></tbody></table>



##### **Dependencias y Escalabilidad**

<table id="bkmrk-tipo-ejemplos-observ"><thead><tr><th>Tipo</th><th>Ejemplos</th><th>Observaciones</th></tr></thead><tbody><tr><td>UI / UX</td><td>`@gorhom/portal`, `react-native-tab-view`, `poppins`, `expo-checkbox`</td><td>Buen uso de librerías modernas</td></tr><tr><td>Estado</td><td>`redux-toolkit`, `react-query`</td><td>Excelente combinación (escalabilidad + optimización)</td></tr><tr><td>Autenticación / Seguridad</td><td>`expo-auth-session`, `expo-secure-store`, `expo-local-authentication`</td><td>Cubren login biométrico, tokens seguros</td></tr><tr><td>Observabilidad / Flags</td><td>`sentry`, `unleash`, `growthbook`</td><td>Nivel empresarial</td></tr></tbody></table>

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

<table id="bkmrk-archivo-estado-readm"><thead><tr><th>Archivo</th><th>Estado</th></tr></thead><tbody><tr><td>`README.md`</td><td>No visible en estructura</td></tr><tr><td>`app.config.js`</td><td>Configuración específica de Expo</td></tr><tr><td>Otros</td><td>No se detecta documentación para desarrolladores o entorno de producción/despliegue</td></tr></tbody></table>

# 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>

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

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

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

Este repositorio parece estar orientado a crear una aplicación de **landing page** con funcionalidad para múltiples secciones. Está basado principalmente en **Vue.js** y utiliza **Quasar Framework** para facilitar el desarrollo y el diseño.

<table id="bkmrk-carpeta%2Farchivo-desc"><thead><tr><th>**Carpeta/Archivo**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**public/**</td><td>Archivos estáticos como iconos, imágenes y recursos multimedia.</td></tr><tr><td>**src/**</td><td>Código fuente de la aplicación.</td></tr><tr><td>**assets/**</td><td>Recursos estáticos utilizados en la app, como imágenes.</td></tr><tr><td>**components/**</td><td>Componentes reutilizables de la interfaz de usuario.</td></tr><tr><td>**layouts/**</td><td>Plantillas (layouts) utilizadas en las páginas.</td></tr><tr><td>**pages/**</td><td>Páginas del sitio web (e.g., `FAQsPage.vue`, `IndexPage.vue`).</td></tr><tr><td>**router/**</td><td>Configuración de rutas de la aplicación.</td></tr><tr><td>**stores/**</td><td>Gestión del estado global usando **Pinia**.</td></tr></tbody></table>

##### **Tecnología**

<table id="bkmrk-elemento-descripci%C3%B3n"><thead><tr><th>**Elemento**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**Framework**</td><td>Quasar (Vue.js 3) para el desarrollo de la aplicación.</td></tr><tr><td>**SSR (Server-Side Rendering)**</td><td>Configurado para SSR con Quasar, mejorando rendimiento y SEO.</td></tr><tr><td>**Vite**</td><td>Utiliza Vite como bundler para optimizar el desarrollo y la construcción.</td></tr><tr><td>**Gestión de Estado**</td><td>Usa **Pinia** para gestionar el estado global de la aplicación.</td></tr><tr><td>**Ruteo**</td><td>Usando **Vue Router** para gestionar la navegación.</td></tr></tbody></table>

##### **Dependencias**

<table id="bkmrk-dependencia-descripc"><thead><tr><th>**Dependencia**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**Dependencias principales**</td><td> </td></tr><tr><td>`vue`, `vue-router`</td><td>Framework y librería de enrutamiento para Vue.js.</td></tr><tr><td>`quasar`</td><td>Framework para crear aplicaciones con diseño consistente y responsivo.</td></tr><tr><td>`pinia`</td><td>Gestión de estado para Vue 3 (alternativa a Vuex).</td></tr><tr><td>`axios`</td><td>Para realizar solicitudes HTTP.</td></tr><tr><td>**Dependencias de desarrollo**</td><td> </td></tr><tr><td>`eslint`, `prettier`</td><td>Herramientas de linting y formateo de código.</td></tr><tr><td>`@intlify/unplugin-vue-i18n`</td><td>Plugin para la internacionalización en Vue.js.</td></tr><tr><td>`vite-plugin-checker`</td><td>Plugin para verificaciones de tipos y linting.</td></tr></tbody></table>

##### **Internacionalización (i18n)**

<table id="bkmrk-elemento-descripci%C3%B3n-1" style="width: 58.0952%; height: 118.4px;"><thead><tr style="height: 29.6px;"><th style="width: 29.2982%; height: 29.6px;">**Elemento**</th><th style="width: 70.4379%; height: 29.6px;">**Descripción**</th></tr></thead><tbody><tr style="height: 29.6px;"><td style="width: 29.2982%; height: 29.6px;">**i18n**</td><td style="width: 70.4379%; height: 29.6px;">Configurado para soportar múltiples idiomas.</td></tr><tr style="height: 29.6px;"><td style="width: 29.2982%; height: 29.6px;">**Archivos de idioma**</td><td style="width: 70.4379%; height: 29.6px;">Se encuentra la configuración de idioma para **es-DO**.</td></tr><tr style="height: 29.6px;"><td style="width: 29.2982%; height: 29.6px;">**vue-i18n**</td><td style="width: 70.4379%; height: 29.6px;">Utiliza el plugin **vue-i18n** para internacionalización.</td></tr></tbody></table>

##### **Scripts en `package.json`**

<table id="bkmrk-script-descripci%C3%B3n-d"><thead><tr><th>**Script**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>`dev`</td><td>Inicia la aplicación en modo de desarrollo con SSR.</td></tr><tr><td>`build`</td><td>Construye la aplicación para producción con un dominio específico.</td></tr><tr><td>`host`</td><td>Despliega la aplicación en **Firebase Hosting** después de construirla.</td></tr><tr><td>`lint`</td><td>Ejecuta ESLint en los archivos `.js` y `.vue` del proyecto.</td></tr><tr><td>`format`</td><td>Ejecuta Prettier para formatear el código según las configuraciones.</td></tr></tbody></table>

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

<table id="bkmrk-elemento-descripci%C3%B3n-2"><thead><tr><th>**Elemento**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**Pruebas**</td><td>No se configuran pruebas unitarias ni de integración.</td></tr><tr><td> </td><td> </td></tr></tbody></table>

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

<table id="bkmrk-elemento-descripci%C3%B3n-3"><thead><tr><th>**Elemento**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**Integración Continua**</td><td>No se mencionan explícitamente flujos de integración continua (CI). Sin embargo, la presencia de configuraciones de despliegue y scripts como `build` y `host` sugieren un enfoque manual para integración y despliegue.</td></tr><tr><td>**Despliegue Continuo**</td><td>El despliegue se realiza utilizando el script `host`, que ejecuta el despliegue a **Firebase Hosting**. Sin embargo, no hay un flujo automático o un archivo específico para gestionar el despliegue continuo (CD).</td></tr><tr><td>**Faltan archivos de CI/CD**</td><td>No hay archivos de configuración específicos para plataformas de CI/CD como GitHub Actions.</td></tr><tr><td>**Automatización de Despliegue**</td><td>El script `host` despliega manualmente la aplicación al entorno de Firebase.</td></tr><tr><td> </td><td> </td></tr></tbody></table>

# Análisis Técnico del Repositorio: totp-cc

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

Nombre del Proyecto: totp-cc  
Repositorio: [github.com/ogticrd/totp-cc](https://github.com/ogticrd/totp-cc)

Este repositorio es una aplicación escrita en **Go (Golang)**, que parece estar diseñada para generar y validar **TOTP (Time-based One-Time Passwords)** para ciudadanos como parte de un sistema de autenticación o verificación de identidad.

<table id="bkmrk-carpeta%2Farchivo-desc" style="width: 100%; height: 582.538px;"><thead><tr style="height: 29.6px;"><th style="width: 18.0744%; height: 29.6px;">Carpeta/Archivo</th><th style="width: 81.8304%; height: 29.6px;">Descripción</th></tr></thead><tbody><tr style="height: 49.025px;"><td style="width: 18.0744%; height: 49.025px;">`config/`</td><td style="width: 81.8304%; height: 49.025px;">Contiene lógica de configuración general (`config.go`) y sus pruebas. Posiblemente gestiona valores de `.env` y configuración de entornos.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`database/`</td><td style="width: 81.8304%; height: 30.9125px;">Lógica de conexión a base de datos, específicamente MongoDB. Incluye pruebas (`mongodb_test.go`).</td></tr><tr style="height: 49.025px;"><td style="width: 18.0744%; height: 49.025px;">`docs/`</td><td style="width: 81.8304%; height: 49.025px;">Archivos Swagger (`swagger.json`, `swagger.yaml`) para la documentación de API, y código Go relacionado (`docs.go`).</td></tr><tr style="height: 49.025px;"><td style="width: 18.0744%; height: 49.025px;">`internal/handlers/`</td><td style="width: 81.8304%; height: 49.025px;">Manejadores HTTP para generación y validación de TOTP (`generate.go`, `validate.go`).</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`internal/routes/`</td><td style="width: 81.8304%; height: 30.9125px;">Define las rutas HTTP para los endpoints de generación y validación.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`internal/models/`</td><td style="width: 81.8304%; height: 30.9125px;">Estructuras de datos y lógica del dominio como `citizentotp.go`, validación y estructuras de respuesta.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`pkg/cipher/`</td><td style="width: 81.8304%; height: 30.9125px;">Lógica criptográfica de cifrado AES-128 y pruebas unitarias.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`pkg/totp/`</td><td style="width: 81.8304%; height: 30.9125px;">Implementación central del algoritmo TOTP, con pruebas.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`pkg/utils/`</td><td style="width: 81.8304%; height: 30.9125px;">Funciones auxiliares o utilitarias generales.</td></tr><tr style="height: 47.7125px;"><td style="width: 18.0744%; height: 47.7125px;">`router/`</td><td style="width: 81.8304%; height: 47.7125px;">Define el router principal de la aplicación (`router.go`), usando probablemente un framework como Gin o Echo.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`.env.example`</td><td style="width: 81.8304%; height: 30.9125px;">Archivo de ejemplo de variables de entorno.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`Dockerfile`</td><td style="width: 81.8304%; height: 30.9125px;">Para construir la imagen Docker de la aplicación.</td></tr><tr style="height: 49.025px;"><td style="width: 18.0744%; height: 49.025px;">`docker-compose.dev.yaml`</td><td style="width: 81.8304%; height: 49.025px;">Compose para entorno de desarrollo. Posiblemente incluye MongoDB.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`Makefile`</td><td style="width: 81.8304%; height: 30.9125px;">Comandos automáticos para tareas comunes como build, test o lint.</td></tr><tr style="height: 30.9125px;"><td style="width: 18.0744%; height: 30.9125px;">`main.go`</td><td style="width: 81.8304%; height: 30.9125px;">Punto de entrada de la aplicación. Suele iniciar servidor, cargar configuración, rutas, etc.</td></tr></tbody></table>

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

<table id="bkmrk-tipo-de-prueba-imple"><thead><tr><th>Tipo de prueba</th><th>Implementado</th><th>Observaciones</th></tr></thead><tbody><tr><td>Unitarias (`*_test.go`)</td><td> Sí</td><td>Presentes en `pkg/`, `config/`, `database/`.</td></tr><tr><td>Integración</td><td>No</td><td>No se observan pruebas de flujo completo.</td></tr><tr><td>Cobertura con herramientas</td><td>No</td><td>No se detectó integración con coverage tools.</td></tr></tbody></table>

##### **Seguridad**

<table id="bkmrk-elemento-estado-%2F-re"><thead><tr><th>Elemento</th><th>Estado / Recomendación</th></tr></thead><tbody><tr><td>Manejo de secretos</td><td>Usa `.env.example`. Se recomienda revisar claves críticas.</td></tr><tr><td>Cifrado</td><td>AES-128 implementado correctamente.</td></tr><tr><td>Variables en entorno</td><td>Bien gestionadas, pero falta validación de existencia obligatoria.</td></tr></tbody></table>


##### **Resumen de Arquitectura**

<table id="bkmrk-componente-implement"><thead><tr><th>Componente</th><th>Implementación</th></tr></thead><tbody><tr><td>Tipo de Aplicación</td><td>Microservicio en Go para generación/validación de TOTP.</td></tr><tr><td>Almacenamiento</td><td>MongoDB.</td></tr><tr><td>API</td><td>RESTful con documentación Swagger.</td></tr><tr><td>Autenticación / Seguridad</td><td>Cifrado + TOTP (MFA o validación por usuario).</td></tr><tr><td>Despliegue Local</td><td>Docker Compose (`.dev.yaml`).</td></tr><tr><td>Entrada Principal</td><td>`main.go` arranca router + dependencias.</td></tr></tbody></table>

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

<table id="bkmrk-elemento-estado-%2F-ob"><thead><tr><th>Elemento</th><th>Estado / Observación</th></tr></thead><tbody><tr><td>GitHub Actions / CI/CD</td><td>No se encontró `.github/workflows/` ni ningún pipeline CI/CD configurado.</td></tr><tr><td>Docker</td><td>Dockerfile para una app en go.</td></tr><tr><td>Docker Compose</td><td>Existe un archivo para entorno de desarrollo.</td></tr><tr><td>Despliegue automatizado</td><td>No se identificó ningún script de despliegue automático.</td></tr></tbody></table>

##### **Tecnología**

<table id="bkmrk-categor%C3%ADa-tecnolog%C3%ADa"><thead><tr><th>Categoría</th><th>Tecnología / Herramienta</th></tr></thead><tbody><tr><td>**Lenguaje**</td><td>Go (Golang)</td></tr><tr><td>**Framework web**</td><td>Fiber</td></tr><tr><td>**Contenedor**</td><td>Docker (multi-stage)</td></tr><tr><td>**Base de imagen**</td><td>`golang:1.22-alpine`, `scratch`</td></tr><tr><td>**Formato de build**</td><td>Go Modules (`go.mod`)</td></tr></tbody></table>

# Análisis Técnico del Repositorio: cc-institutions-mock-api

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

Nombre del Proyecto: cc-institutions-mock-api  
Repositorio: [github.com/ogticrd/cc-institutions-mock-api](https://github.com/ogticrd/cc-institutions-mock-api)

API Mockup para proveer data fake de las Instituciones para la App Carpeta Ciudadana.

<table id="bkmrk-carpeta-%2F-archivo-de"><thead><tr><th>Carpeta / Archivo</th><th>Descripción breve</th></tr></thead><tbody><tr><td>`.github/workflows/`</td><td>Contiene workflows de GitHub Actions para CI/CD (clean, development, staging).</td></tr><tr><td>`cmd/seeders`</td><td>Probablemente incluye scripts para sembrar datos en la base de datos.</td></tr><tr><td>`config/config.go`</td><td>Archivo de configuración global de la app (env vars, puertos, etc).</td></tr><tr><td>`database/mongodb.go`</td><td>Inicialización y conexión a MongoDB.</td></tr><tr><td>`docs/`</td><td>Contiene documentación Swagger (`.json`, `.yaml`) y archivo auxiliar.</td></tr><tr><td>`internals/`</td><td>Lógica principal dividida en submódulos según entidad o institución.</td></tr><tr><td>`models/`</td><td>Definiciones de modelos de datos usados por las APIs y la base de datos.</td></tr><tr><td>`router/router.go`</td><td>Inicializa las rutas HTTP del servidor.</td></tr><tr><td>`utils/utils.go`</td><td>Funciones auxiliares reutilizables (helpers).</td></tr><tr><td>`.dockerignore`</td><td>Archivos que se deben excluir del contexto de Docker.</td></tr><tr><td>`.env.example`</td><td>Variables de entorno de ejemplo para configurar localmente.</td></tr><tr><td>`Dockerfile`</td><td>Imagen Docker para compilar y ejecutar el backend.</td></tr><tr><td>`Makefile`</td><td>Tareas automatizadas (build, lint, run, etc).</td></tr><tr><td>`README.md`</td><td>Documentación inicial del proyecto.</td></tr><tr><td>`go.mod / go.sum`</td><td>Manejadores de dependencias de Go.</td></tr><tr><td>`main.go`</td><td>Punto de entrada principal de la aplicación Go.</td></tr></tbody></table>

##### **Módulos por dominio (internals/handlers y routes)**

<table id="bkmrk-instituci%C3%B3n-%2F-m%C3%B3dulo"><thead><tr><th>Institución / Módulo</th><th>Handler (`handlers/`)</th><th>Rutas (`routes/`)</th><th>Modelo (`models/`)</th><th>Funcionalidad esperada</th></tr></thead><tbody><tr><td>Educación</td><td>`educacion.go`</td><td>`educacion.go`</td><td>`educacion.go`</td><td>Consultas al Ministerio de Educación</td></tr><tr><td>Intrant</td><td>`intrant.go`</td><td>`intrant.go`</td><td>`intrant.go`</td><td>Licencias, tránsito y vehículos</td></tr><tr><td>JCE</td><td>`jce.go`</td><td>`jce.go`</td><td>`jce.go`</td><td>Datos de cédula y registro civil</td></tr><tr><td>MESCyT</td><td>`mescyt.go`</td><td>`mescyt.go`</td><td>`educacion.go`</td><td>Becas y títulos universitarios</td></tr><tr><td>Migración</td><td>`migracion.go`</td><td>`migration.go`</td><td>`migracion.go`</td><td>Entrada/salida del país</td></tr><tr><td>SIPEN</td><td>`sipen.go`</td><td>`sipen.go`</td><td>`pension.go`</td><td>Pensiones, AFP</td></tr><tr><td>SISALRIL</td><td>`sisalril.go`</td><td>`sisalril.go`</td><td>`sisalril.go`</td><td>Seguro familiar de salud</td></tr><tr><td>SNS</td><td>`sns.go`</td><td>`sns.go`</td><td>`sns.go`</td><td>Centros de salud, afiliación</td></tr><tr><td>Superseguros</td><td>`superseguros.go`</td><td>`superseguros.go`</td><td>`citizen.go` (?)</td><td>Información de seguros</td></tr></tbody></table>

##### **Documentación y APIs**

<table id="bkmrk-archivo-prop%C3%B3sito-do"><thead><tr><th>Archivo</th><th>Propósito</th></tr></thead><tbody><tr><td>`docs/swagger.yaml`</td><td>Definición OpenAPI de las rutas y modelos</td></tr><tr><td>`docs.go`</td><td>Generación o integración de Swagger posiblemente con comentarios Go</td></tr><tr><td>`README.md`</td><td>Introducción al proyecto y guía de uso</td></tr></tbody></table>

##### **Tecnología**

<table id="bkmrk-elemento-descripci%C3%B3n"><thead><tr><th>**Elemento**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**Tecnología Backend**</td><td>Go (Golang)</td></tr><tr><td>**Framework**</td><td>Ninguno especificado; se utiliza Go nativo para implementar la lógica del backend.</td></tr><tr><td>**Base de Datos**</td><td>MongoDB</td></tr><tr><td>**Archivos de Configuración**</td><td>Archivos como `config.go` y `database.go` sugieren la configuración de la base de datos y otros parámetros del sistema.</td></tr><tr><td>**Entorno de Desarrollo**</td><td>El repositorio contiene un `Makefile`, `Dockerfile`, y archivos de configuración como `.env.example` que permiten configurar y ejecutar el entorno de desarrollo.</td></tr><tr><td>**Contenedores**</td><td>El repositorio contiene un `Dockerfile` que permite construir una imagen Docker para el backend.</td></tr><tr><td>**CI/CD**</td><td>El repositorio incluye workflows de CI/CD en `.github/workflows/`, como `clean.yml`, `development.yml`, `staging.yml`, que gestionan despliegues automáticos.</td></tr><tr><td>**Dependencias**</td><td>`go.mod` y `go.sum` indican que el proyecto usa Go Modules para gestionar las dependencias del proyecto.</td></tr><tr><td>**Servicios**</td><td>El backend parece estar dividido en varios servicios, como `citizenapi`, con distintos manejadores en `handlers` que se encargan de diferentes aspectos del servicio.</td></tr><tr><td>**Documentación**</td><td>Se incluyen archivos de documentación como `swagger.json` y `swagger.yaml`, que pueden describir las APIs del servicio.</td></tr></tbody></table>




#####  

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

<table id="bkmrk-%C3%81rea-herramienta%2Farc" style="width: 81.4286%; height: 144.387px;"><thead><tr style="height: 29.6px;"><th style="width: 15.7985%; height: 29.6px;">Área</th><th style="width: 30.8224%; height: 29.6px;">Herramienta/Archivo</th><th style="width: 53.242%; height: 29.6px;">Comentarios</th></tr></thead><tbody><tr style="height: 30.9125px;"><td style="width: 15.7985%; height: 30.9125px;">**CI/CD**</td><td style="width: 30.8224%; height: 30.9125px;">`.github/workflows` (presente)</td><td style="width: 53.242%; height: 30.9125px;">GitHub Actions configurado (ej. limpieza de caché, tests)</td></tr><tr style="height: 30.9125px;"><td style="width: 15.7985%; height: 30.9125px;">**Contenedores**</td><td style="width: 30.8224%; height: 30.9125px;">`Dockerfile`</td><td style="width: 53.242%; height: 30.9125px;">Contenedor de pruebas configurado</td></tr><tr style="height: 52.9625px;"><td style="width: 15.7985%; height: 52.9625px;">**Seguridad**</td><td style="width: 30.8224%; height: 52.9625px;"><table><tbody><tr><td data-col-size="md" data-end="1831" data-start="1780">`dependabot.yml`</td></tr></tbody></table>

</td><td style="width: 53.242%; height: 52.9625px;">Monitoreo automático de versiones y alertas</td></tr></tbody></table>

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

<table id="bkmrk-archivo-descripci%C3%B3n-" style="width: 100%;"><thead><tr><th style="width: 16.8001%;">**Archivo**</th><th style="width: 83.2952%;">**Descripción**</th></tr></thead><tbody><tr><td style="width: 16.8001%;">**development.yml**</td><td style="width: 83.2952%;">**Desplegar entorno de desarrollo en Cloud Run**</td></tr><tr><td style="width: 16.8001%;">**staging.yml**</td><td style="width: 83.2952%;">Desplegar a entorno de preproducción (staging)</td></tr><tr><td style="width: 16.8001%;">**clean.yml**</td><td style="width: 83.2952%;">Eliminar recursos temporales de PR cerrados</td></tr></tbody></table>