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