# 🧹 AUDITORÍA COMPLETA DE LIMPIEZA DEL PROYECTO **Fecha:** 2025-01-07 **Analista:** Ingeniero de Optimización y Mantenimiento **Versión del Proyecto:** 1.0.0 --- ## 📊 RESUMEN EJECUTIVO ### Estado Actual del Proyecto - **Tamaño Total:** ~703 MB (incluyendo node_modules) - **Archivos Markdown:** 2,247 archivos - **Dependencias Frontend:** 78 dependencias principales - **Dependencias Backend:** 7 dependencias principales - **Scripts Shell:** 15+ scripts - **Scripts Python:** 6 scripts ### Espacio Recuperable Estimado | Categoría | Espacio Estimado | % del Total | Prioridad | |-----------|------------------|-------------|-----------| | **Archivos de Build (dist/)** | 15 MB | 2.1% | 🔴 Alta | | **Logs en Repo** | < 1 MB | <0.1% | 🔴 Alta | | **Archivos de Backup** | ~500 KB | <0.1% | 🟡 Media | | **Documentación Obsoleta** | ~2 MB | 0.3% | 🟡 Media | | **Scripts Duplicados** | ~50 KB | <0.1% | 🟢 Baja | | **Dependencias No Usadas** | ~50-100 MB | 7-14% | 🟡 Media | | **Carpetas Vacías** | < 100 KB | <0.1% | 🟢 Baja | **Total Recuperable:** ~70-120 MB (~10-17% del proyecto sin node_modules) ### Reducción de Dependencias Estimada - **Dependencias Potencialmente No Usadas:** 15-20% (principalmente Radix UI components) - **Tiempo Estimado de Limpieza:** 4-6 horas --- ## 📋 TABLA DE ACCIONES PRIORIZADAS | Prioridad | Tipo | Archivo/Ruta | Problema | Acción Recomendada | Espacio | Riesgo | |-----------|------|--------------|----------|-------------------|---------|---------| | **🔴 ALTA** | Build Artifacts | `dist/` | Carpeta de build en repo | Añadir a .gitignore, eliminar | 15 MB | 🟢 Bajo | | **🔴 ALTA** | Logs | `logs/pm2-error.log` | Log en repositorio | Añadir a .gitignore, eliminar | <1 MB | 🟢 Bajo | | **🔴 ALTA** | .env en repo | `backend/.env` | Credenciales en repo | Añadir a .gitignore, verificar no commitearse | - | 🔴 CRÍTICO | | **🟡 MEDIA** | Backup File | `src/data/manual-index.ts.backup` | Archivo de backup | Eliminar (ya existe el original) | ~200 KB | 🟢 Bajo | | **🟡 MEDIA** | Docs Archive | `docs/_archivo/` | 12 archivos obsoletos | Consolidar o eliminar | ~500 KB | 🟡 Medio | | **🟡 MEDIA** | Config Backup | `config_backup/` | Configs antiguos | Eliminado tras validar que no era necesario | ~50 KB | ✅ | | **🟡 MEDIA** | Duplicate Docs | `dist/docs/` | Duplicación de docs | Eliminar (dist debe regenerarse) | ~3 MB | 🟢 Bajo | | **🟡 MEDIA** | Empty Folders | `assets/videos/bloque_*` (varios vacíos) | Carpetas vacías | Eliminar o documentar propósito | <100 KB | 🟢 Bajo | | **🟡 MEDIA** | Python Venv | `.venv/` | Entorno Python en repo | Añadir a .gitignore (ya está) | Variable | 🟢 Bajo | | **🟢 BAJA** | Duplicate Scripts | `cleanup_completo.sh` vs `cleanup_project.sh` | Scripts similares | Consolidar en uno | ~16 KB | 🟢 Bajo | | **🟢 BAJA** | Duplicate Scripts | `deploy.sh`, `desplegar.sh`, `docker.sh` | Scripts duplicados | Consolidar o documentar diferencias | ~13 KB | 🟢 Bajo | | **🟢 BAJA** | Temp Script | `limpiar-sw.js` | Script temporal para consola | Mover a docs o eliminar | <1 KB | 🟢 Bajo | | **🟢 BAJA** | Root MD Files | `ESTADO_ACTUAL.md`, `EJECUTAR_AHORA.md`, etc. | Docs temporales en raíz | Mover a `docs/` o eliminar | ~20 KB | 🟢 Bajo | | **🟢 BAJA** | Duplicate Placeholder | `dist/placeholder.svg ` y `public/placeholder.svg` | Duplicado en dist | dist se regenera, no eliminar | - | 🟢 Bajo | --- ## 🔍 ANÁLISIS DETALLADO POR CATEGORÍA ### 1. ARCHIVOS Y CARPETAS INNECESARIOS #### 🔴 CRÍTICO: Archivos de Build y Logs **Problema:** Archivos generados automáticamente están en el repositorio. ```bash # Archivos a eliminar: dist/ # 15 MB - debe generarse en CI/CD logs/pm2-error.log # Log generado - debe estar en .gitignore dist/scorm/dist/ # Build artifacts duplicados ``` **Acción:** ```bash # Añadir a .gitignore (si no está): echo "dist/" >> .gitignore echo "logs/*.log" >> .gitignore # Eliminar archivos: rm -rf dist/ rm -f logs/*.log ``` **Riesgo:** 🟢 Bajo - Estos archivos se regeneran automáticamente. --- #### 🔴 CRÍTICO: Credenciales en Repositorio **Problema:** `.env` file con credenciales reales. ```bash # Verificar si está en .gitignore: backend/.env ``` **Acción:** ```bash # Verificar que .gitignore tiene .env: grep -q "^\.env$" .gitignore || echo ".env" >> .gitignore # Si ya está commitado, remover del historial (cuidado): # git rm --cached backend/.env # git commit -m "Remove .env from tracking" # Crear .env.example como template: # cp backend/.env backend/.env.example # # Editar .env.example para eliminar valores reales ``` **Riesgo:** 🔴 CRÍTICO - Credenciales expuestas. --- #### 🟡 MEDIA: Archivos de Backup **Archivos Identificados:** - `src/data/manual-index.ts.backup` (2,569 líneas, ~200 KB) - Archivos en `docs/_archivo/` (12 archivos) **Acción:** ```bash # Eliminar backup si el original está OK: rm -f src/data/manual-index.ts.backup # Evaluar docs/_archivo/: # Si son obsoletos, consolidar info importante y eliminar # Si son necesarios para referencia, mantener pero documentar ``` **Riesgo:** 🟡 Medio - Verificar que el original funciona antes de eliminar. --- #### 🟡 MEDIA: Configuraciones de Backup **Ubicación:** `config_backup/` (eliminado) **Contenido:** - `_redirects` (Netlify) - `netlify.toml` - `nginx.conf.example` - `vercel.json` **Acción:** ```bash # Evaluar si son necesarios: # - Si no se usan Netlify/Vercel actualmente, eliminar # - Si son ejemplos/templates, mover a docs/examples/ # - Si son activos pero diferentes, consolidar en raíz ``` **Riesgo:** 🟡 Medio - Verificar uso antes de eliminar. --- #### 🟢 BAJA: Carpetas Vacías **Carpetas Identificadas:** ```bash docs/archivo # Vacía (nombre confuso con _archivo) database/seeds/ # Vacía assets/videos/bloque_* # Varias vacías assets/checklists_app/ # Vacía assets/templates/ # Vacía ``` **Acción:** ```bash # Eliminar carpetas vacías (o añadir .gitkeep si son intencionales): find . -type d -empty -not -path "./.git/*" -not -path "./node_modules/*" -delete ``` **Riesgo:** 🟢 Bajo - Carpetas vacías no afectan funcionalidad. --- ### 2. DEPENDENCIAS Y PAQUETES #### Análisis de Dependencias Frontend **Total:** 78 dependencias principales **Potencialmente No Usadas:** | Dependencia | Propósito | Probabilidad No Usada | Verificar | |-------------|-----------|----------------------|-----------| | `@hookform/resolvers` | React Hook Form | 🟡 Media | Usado en admin-panel | | `react-resizable-panels` | Panels redimensionables | 🔴 Alta | No visto en uso | | `input-otp` | OTP inputs | 🔴 Alta | No usado | | `embla-carousel-react` | Carousel | 🟡 Media | Verificar si Carousel se usa | | `vaul` | Drawer component | 🔴 Alta | No usado (hay drawer de Radix) | | `recharts` | Gráficos | 🟡 Media | Verificar en admin panel | | `next-themes` | Theme switching | ✅ Usado | Mantener | | Radix UI components (30+) | UI primitives | 🟡 Media | Verificar uso real de cada uno | **Comando para Analizar:** ```bash # Instalar herramienta de análisis: npm install -g depcheck # Analizar dependencias no usadas: depcheck # O usar npx: npx depcheck ``` **Acción Recomendada:** 1. Ejecutar `depcheck` para identificar dependencias no usadas 2. Verificar manualmente cada componente Radix UI usado 3. Eliminar dependencias confirmadas no usadas 4. Estimar reducción: ~50-100 MB en node_modules **Riesgo:** 🟡 Medio - Verificar que no se usen en tiempo de ejecución o dinámicamente. --- #### Análisis de Dependencias Backend **Total:** 7 dependencias principales **Todas parecen estar en uso:** - `express` ✅ - Framework principal - `pg` ✅ - PostgreSQL driver - `jsonwebtoken` ✅ - Autenticación - `bcrypt` ✅ - Hash de passwords - `cors` ✅ - CORS middleware - `dotenv` ✅ - Variables de entorno - `multer` ✅ - Upload de archivos - `archiver` ✅ - Generación de SCORM - `marked` ✅ - Markdown parsing **Acción:** ✅ No se requiere limpieza de dependencias backend. --- ### 3. CÓDIGO MUERTO (DEAD CODE) #### Componentes React Potencialmente No Usados **Verificar manualmente:** - Componentes en `src/components/ui/` que no se importan - Hooks en `src/hooks/` no utilizados - Utilidades en `src/utils/` no referenciadas **Comando para Detectar:** ```bash # Usar ts-prune para detectar exports no usados: npx ts-prune # O usar uncomment para detectar imports no usados: npx unimported ``` **Componentes a Verificar:** ```typescript // Verificar si estos componentes se usan: - src/components/ui/chart.tsx // ¿Gráficos en uso? - src/components/ui/resizable.tsx // ¿Panels redimensionables? - src/components/ui/input-otp.tsx // ¿OTP inputs? - src/components/ui/drawer.tsx // ¿Drawer diferente de Radix? ``` **Acción:** 1. Ejecutar análisis de código muerto 2. Verificar imports dinámicos (`lazy()`) 3. Eliminar código no utilizado --- #### Scripts y Rutas API No Utilizados **Backend Routes a Verificar:** ```javascript // Verificar uso de cada ruta en: backend/src/routes/ - content.js // ✅ Usado (admin panel) - drugs.js // ✅ Usado - auth.js // ✅ Usado - stats.js // ✅ Usado (dashboard) - media.js // ⚠️ Verificar uso - validation.js // ✅ Usado - content-pack.js // ✅ Usado (frontend) - content-resources.js // ⚠️ Verificar uso ``` **Acción:** Verificar logs de acceso o añadir middleware de logging. --- ### 4. ASSETS Y RECURSOS #### Imágenes Duplicadas **Problema:** `placeholder.svg` en múltiples ubicaciones: - `public/placeholder.svg` ✅ (correcto) - `dist/placeholder.svg` (generado, no preocupante) **Acción:** ✅ No requiere acción (dist se regenera). --- #### Carpetas de Assets Vacías o Con Contenido Obsoleto **Carpetas a Verificar:** ```bash assets/videos/bloque_00/ # Vacía assets/videos/bloque_01/ # Vacía assets/videos/bloque_02/ # Vacía # ... más vacías assets/checklists_app/ # Vacía assets/templates/ # Vacía ``` **Acción:** ```bash # Verificar contenido: find assets/ -type f | wc -l # Si están vacías, eliminar o documentar propósito ``` --- #### Fuentes y Recursos No Referenciados **Verificar:** - Fuentes en `public/fonts/` (si existe) - Iconos no utilizados - Assets de prueba o mock data **Acción:** Ejecutar auditoría de assets con herramienta de bundling. --- ### 5. SCRIPTS Y AUTOMATIZACIÓN #### Scripts Duplicados o Obsoletos **Scripts en Raíz:** ```bash # Deploy scripts - Consolidar: deploy.sh # Consolidado desplegar.sh # Wrapper interactivo docker.sh # Deploy Docker # Cleanup scripts - Consolidado: cleanup.sh # Otros: webhook-deploy.sh # Específico, mantener reorganizar_proyecto.sh # ¿Usado recientemente? ``` **Acción:** 1. Documentar propósito de cada script 2. Consolidar scripts similares 3. Mover scripts de utilidad a `scripts/utils/` 4. Eliminar scripts obsoletos confirmados --- #### Scripts Python **Scripts Identificados:** ```bash generate-docs.py # ¿Usado recientemente? integrate-assets.py # ¿Usado recientemente? scripts/limpiar_manual.py # Script de limpieza específico scripts/actualizar_rutas_indice.py # Script de mantenimiento scripts/anadir_todos_enlaces.py # Script de mantenimiento scripts/anadir_enlaces_referencia.py # Script de mantenimiento ``` **Acción:** 1. Verificar fecha de último uso (git log) 2. Documentar propósito de cada script 3. Consolidar en `scripts/python/` si se mantienen 4. Eliminar si obsoletos --- #### GitHub Actions / CI Config **Verificar:** ```bash # Buscar workflows: .github/workflows/*.yml # Si no existen, considerar añadir: # - CI/CD básico # - Linting automático # - Build verification ``` **Acción:** ✅ No hay configs obsoletos (no existen workflows). --- ### 6. CONFIGURACIONES #### Configuraciones Duplicadas **TypeScript Configs:** ```bash tsconfig.json # ✅ Principal tsconfig.app.json # ✅ Para app tsconfig.node.json # ✅ Para scripts ``` **Acción:** ✅ No duplicados, estructura correcta. --- #### Configuraciones de Build Duplicadas **Verificar:** - `vite.config.ts` ✅ (principal) - `docker-compose.yml` vs `docker-compose.prod.yml` ✅ (diferentes propósitos) - `ecosystem.config.cjs` (PM2) ✅ (necesario) **Acción:** ✅ No requiere limpieza. --- #### Environment Variables **Archivos:** - `env.example` ✅ (template, mantener) - `backend/.env` ⚠️ (verificar que no esté en git) **Acción:** ```bash # Verificar que .env no esté trackeado: git ls-files | grep "\.env$" # Si está, remover: # git rm --cached backend/.env ``` --- ## 🛠️ COMANDOS ESPECÍFICOS PARA LIMPIEZA ### 1. Identificar Archivos Grandes Inútiles ```bash # Buscar archivos > 10MB: find . -type f -size +10M -not -path "./node_modules/*" -not -path "./.git/*" -exec ls -lh {} \; # Buscar archivos de build: du -sh dist/ public/ build/ .next/ 2>/dev/null # Buscar node_modules más grandes: du -sh node_modules/* | sort -hr | head -20 ``` --- ### 2. Encontrar Dependencias No Utilizadas ```bash # Frontend: cd /home/planetazuzu/guia-tes npx depcheck # Con más detalle: npx depcheck --ignores="@types/*,eslint-*,typescript-*,@vitejs/*,vite" # Backend: cd backend npx depcheck ``` --- ### 3. Detectar Código Muerto ```bash # Detectar exports no usados: npx ts-prune # Detectar imports no usados: npx unimported # O usar ESLint: npm run lint -- --fix ``` --- ### 4. Limpiar Automáticamente (CON CONFIRMACIÓN) ```bash #!/bin/bash # Script de limpieza segura - EJECUTAR CON CUIDADO echo "🧹 Iniciando limpieza del proyecto..." echo "⚠️ Este script eliminará archivos. Revisa antes de continuar." read -p "¿Continuar? (yes/no): " confirm if [ "$confirm" != "yes" ]; then echo "❌ Limpieza cancelada" exit 1 fi # 1. Eliminar dist/ (se regenera) if [ -d "dist" ]; then echo "🗑️ Eliminando dist/..." rm -rf dist/ fi # 2. Eliminar logs if [ -d "logs" ]; then echo "🗑️ Limpiando logs..." rm -f logs/*.log fi # 3. Eliminar archivos .backup echo "🗑️ Eliminando archivos .backup..." find . -name "*.backup" -not -path "./node_modules/*" -not -path "./.git/*" -delete # 4. Eliminar carpetas vacías echo "🗑️ Eliminando carpetas vacías..." find . -type d -empty -not -path "./.git/*" -not -path "./node_modules/*" -delete # 5. Limpiar Python cache echo "🗑️ Limpiando __pycache__..." find . -type d -name "__pycache__" -not -path "./node_modules/*" -exec rm -rf {} + 2>/dev/null find . -name "*.pyc" -not -path "./node_modules/*" -delete 2>/dev/null # 6. Limpiar archivos temporales echo "🗑️ Eliminando archivos temporales..." find . -name "*.tmp" -o -name "*.temp" -o -name ".DS_Store" -o -name "Thumbs.db" | \ grep -v node_modules | grep -v .git | xargs rm -f 2>/dev/null echo "✅ Limpieza completada" ``` **Guardar como:** `scripts/cleanup-safe.sh` --- ### 5. Verificar .gitignore Óptimo ```bash # Verificar archivos trackeados que deberían ignorarse: git ls-files | grep -E "(dist/|\.log$|\.backup$|node_modules/)" | head -20 # Si hay archivos que deberían ignorarse: # git rm --cached ``` --- ## 📝 SUGERENCIAS DE PREVENCIÓN ### 1. Configurar .gitignore Óptimo **Añadir a .gitignore (si falta):** ```gitignore # Build outputs dist/ build/ .next/ out/ # Logs logs/ *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log* # Environment variables .env .env.local .env.production .env.development backend/.env # Backup files *.backup *.bak *.old *~ # OS files .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # Python __pycache__/ *.py[cod] *$py.class *.so .Python .venv/ venv/ env/ ENV/ # Temporary files *.tmp *.temp *.swp *.swo # IDE .vscode/* !.vscode/extensions.json .idea/ *.sublime-project *.sublime-workspace # Test coverage coverage/ .nyc_output/ ``` --- ### 2. Scripts de Mantenimiento Preventivo **Crear:** `scripts/maintenance/weekly-cleanup.sh` ```bash #!/bin/bash # Script de mantenimiento semanal echo "🧹 Limpieza semanal del proyecto..." # 1. Limpiar node_modules duplicados (si hay) npm dedupe # 2. Actualizar dependencias menores npm update # 3. Verificar dependencias no usadas npx depcheck --ignores="@types/*,eslint-*,typescript-*" # 4. Verificar código muerto npx ts-prune | head -20 # 5. Limpiar cache de npm npm cache clean --force echo "✅ Mantenimiento completado" ``` --- ### 3. Herramientas de Monitoreo Recomendadas **Para Detectar Dependencias No Usadas:** - `depcheck` - Detectar dependencias no usadas - `npm-check` - Actualizar y verificar dependencias - `bundlesize` - Monitorear tamaño de bundles **Para Detectar Código Muerto:** - `ts-prune` - Detectar exports no usados en TypeScript - `unimported` - Detectar imports no usados - `eslint-plugin-unused-imports` - Linting de imports no usados **Para Monitorear Tamaño:** - `webpack-bundle-analyzer` - Analizar tamaño de bundles - `source-map-explorer` - Explorar tamaño de código fuente **Instalar:** ```bash npm install --save-dev depcheck ts-prune unimported webpack-bundle-analyzer ``` --- ### 4. GitHub Actions para Limpieza Automática **Crear:** `.github/workflows/cleanup.yml` ```yaml name: Weekly Cleanup Check on: schedule: # Cada lunes a las 00:00 UTC - cron: '0 0 * * 1' workflow_dispatch: jobs: cleanup-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '20' - name: Check for unused dependencies run: | npm install npx depcheck --ignores="@types/*,eslint-*,typescript-*,@vitejs/*,vite" || true - name: Check for dead code run: | npx ts-prune | head -50 || true - name: Check bundle size run: | npm run build npx bundlesize || true - name: Create issue if problems found if: failure() uses: actions/github-script@v6 with: script: | github.rest.issues.create({ owner: context.repo.owner, repo: context.repo.repo, title: '⚠️ Cleanup Check: Issues Found', body: 'Weekly cleanup check found potential issues. Please review.' }) ``` --- ## ✅ CHECKLIST DE LIMPIEZA ### Fase 1: Crítico (Hacer YA) - [ ] Verificar que `backend/.env` NO está en git - [ ] Añadir `dist/` a .gitignore si falta - [ ] Añadir `logs/*.log` a .gitignore si falta - [ ] Eliminar `dist/` del repositorio - [ ] Eliminar `logs/pm2-error.log` del repositorio - [ ] Verificar que `.env` está en .gitignore **Tiempo:** 15 minutos **Riesgo:** 🟢 Bajo **Impacto:** 🔴 Alto (seguridad y organización) --- ### Fase 2: Importante (Hacer Pronto) - [ ] Ejecutar `npx depcheck` y analizar resultados - [ ] Eliminar dependencias no usadas confirmadas - [ ] Eliminar `src/data/manual-index.ts.backup` - [ ] Evaluar y consolidar `docs/_archivo/` - [ ] Consolidar scripts de deploy similares - [ ] Documentar propósito de cada script en raíz **Tiempo:** 2-3 horas **Riesgo:** 🟡 Medio **Impacto:** 🟡 Medio (optimización) --- ### Fase 3: Opcional (Hacer Cuando Tengas Tiempo) - [ ] Ejecutar `npx ts-prune` y eliminar código muerto - [ ] Consolidar scripts Python en carpeta dedicada - [ ] Eliminar carpetas vacías de assets - [ ] Documentar assets no utilizados - [ ] Añadir GitHub Action para limpieza automática - [ ] Configurar herramientas de monitoreo **Tiempo:** 2-3 horas **Riesgo:** 🟢 Bajo **Impacto:** 🟢 Bajo (mejora incremental) --- ## 📊 RESUMEN FINAL ### Espacio Recuperable Total - **Crítico:** ~15 MB (dist/ + logs) - **Importante:** ~50-100 MB (dependencias no usadas) - **Opcional:** ~2-5 MB (archivos pequeños y carpetas vacías) **Total Estimado:** ~70-120 MB (~10-17% del proyecto sin node_modules) ### Reducción de Dependencias - **Potencialmente No Usadas:** 15-20% de dependencias frontend - **Reducción Estimada en node_modules:** 50-100 MB ### Tiempo Total de Limpieza - **Fase 1 (Crítico):** 15 minutos - **Fase 2 (Importante):** 2-3 horas - **Fase 3 (Opcional):** 2-3 horas - **Total:** 4-6 horas ### Prioridades Recomendadas 1. **🔴 ALTA:** Seguridad (.env) y Build artifacts (dist/) 2. **🟡 MEDIA:** Dependencias no usadas y archivos de backup 3. **🟢 BAJA:** Código muerto y consolidación de scripts --- **Última actualización:** 2025-01-07 **Próxima revisión recomendada:** Mensual o antes de cada release mayor