repo-scan — Auditoría Multi-Stack
NutriTrack Pro · Monorepo · Análisis: standard · 18 Jun 2026
🔍 42.318 ficheros ⚠️ 9 hallazgos críticos ✓ Informe completo
Repositorio nutritrack-pro
Tamaño total 1.38 GB
Ficheros 42.318
Módulos 6
Stacks 5
Nivel análisis Standard
Librerías detectadas 23 embebidas
Artefactos build 847 MB
💻
4.2 MB
Código propio
≈ 38% del repo útil
📦
6.8 MB
Terceros embebidos
23 librerías detectadas
🗑️
847 MB
Peso muerto / artefactos
node_modules, dist, .pyc, .ipch
🔄
3
Duplicados detectados
axios ×2, DateUtils ×3
⚰️
2
Módulos a deprecar
legacy ObjC + analytics v1
🏗️
2
Módulos a reconstruir
vendor Android + ml/third_party

Composición del repositorio

1.38 GB total
Código propio 4.2 MB
Terceros embebidos 6.8 MB
Artefactos / muerto 847 MB

Código propio por módulo (MB)

backend-api
1.41 MB
ml-pipeline
1.16 MB
web-dashboard
0.90 MB
mobile-android
0.63 MB
mobile-ios
0.10 MB
docs
0.01 MB
📁 Análisis por módulo
Módulo Stack(s) Ficheros Código propio Terceros Build / Muerto Librerías detectadas Veredicto
backend-api
REST API principal
TSNode 3.412 1.41 MB 0.2 MB 312 MB ⚠ express 4.18, zod 3.22, prisma 5.x ● ACTIVO CLAVE
web-dashboard
Panel Vue 3 clientes
VueTS 1.847 0.90 MB 0.4 MB 48 MB axios 1.4 (copia manual), lodash 4.17 (copia manual), chart.js 4.x ◆ EXTRAER Y FUSIONAR
mobile-android
App Android (adq. 2021)
JavaKotlin 8.203 0.63 MB 2.8 MB 38 MB Retrofit 2.9, Glide 4.15, OkHttp 4.11, Gson 2.10, RxJava 3.x, Dagger 2.46 ▲ RECONSTRUIR
mobile-ios
App iOS legacy + Swift
ObjCSwift 6.114 0.10 MB 1.9 MB 386 MB ⚠ FBCharts 3.1 (embebido), AFNetworking 4.0, Pods cache completo ✕ DEPRECAR
ml-pipeline
Inferencia + señales C++
PythonC++ 4.628 1.16 MB 1.5 MB 63 MB OpenBLAS 0.3.23, Eigen 3.4.0, pybind11 2.11, numpy (headers), onnxruntime 1.16 ▲ RECONSTRUIR
docs
Documentación
114 0.01 MB — NEUTRO
🔍 Hallazgos críticos

🚨 Artefactos comiteados

  • 📁
    backend-api/node_modules (312 MB) — comiteado en 2022, nunca eliminado del historial. Debe purgarse con git filter-repo.
  • 📁
    mobile-ios/Pods (386 MB) — cache CocoaPods completo en repositorio. Solo debe estar en .gitignore.
  • 📁
    backend-api/dist + web-dashboard/build (48 MB) — artefactos de compilación; mover a CI.

🔁 Código duplicado

  • ⚠️
    axios aparece copiado en web-dashboard/lib/ Y declarado en backend-api/package.json. La copia manual tiene la versión 0.27 (antigua, CVE-2023-45857).
  • ⚠️
    DateUtils replicado 3 veces: mobile-android/core/utils, backend-api/src/utils, web-dashboard/src/helpers con lógica divergente.
  • ⚠️
    lodash 4.17 copiado manualmente en web-dashboard/lib en lugar de declararlo como dependencia; versión fija sin parches de seguridad.

📦 Terceros embebidos obsoletos

  • 🔴
    FBCharts 3.1.0 (iOS) — 2019, sin actualizaciones. Migrar a Swift Charts (nativo iOS 16+).
  • 🟡
    AFNetworking 4.0 (iOS ObjC) — toda la capa de red iOS está en Objective-C legacy; candidata a migración SwiftUI.
  • 🟡
    OpenBLAS 0.3.23 (ml-pipeline) — versión vendored manual; actualizar a 0.3.28 (fix multithreading) vía CMake FetchContent.

💀 Módulo deprecar — mobile-ios legacy

  • 📊
    Solo 0.10 MB de código propio vs 1.9 MB de terceros embebidos. Ratio propio/total: 5%.
  • 📊
    Último commit al módulo ObjC legacy: 14 meses sin actividad. El módulo Swift nuevo en NutriCore/ ya reemplaza el 80% de funcionalidad.
  • 📊
    386 MB de Pods que inflan el historial git y ralentizan clones en CI en ~4 min.
📚 Librerías embebidas detectadas (23 total)
Librería Versión detectada Módulo Stack Última estable Riesgo Acción recomendada
axios 0.27.2 web-dashboard/lib TS 1.7.9 ALTO · CVE-2023-45857 Eliminar copia; declarar en package.json
lodash 4.17.19 web-dashboard/lib TS 4.17.21 MEDIO Eliminar copia; usar import granular
FBCharts 3.1.0 mobile-ios/Charts Swift N/A — abandonado ALTO — abandono Migrar a Swift Charts (iOS 16+)
AFNetworking 4.0.1 mobile-ios/NutriCore ObjC 4.0.1 MEDIO — ObjC legacy Migrar a URLSession/Alamofire Swift
Retrofit 2.9.0 mobile-android/vendor Java 2.11.0 MEDIO Actualizar; declarar en build.gradle
OpenBLAS 0.3.23 ml-pipeline/third_party C++ 0.3.28 MEDIO Actualizar vía CMake FetchContent
Eigen 3.4.0 ml-pipeline/third_party C++ 3.4.0 BAJO OK — versión reciente
pybind11 2.11.1 ml-pipeline/third_party C++ 2.13.6 BAJO Actualizar; usar pip extras
Glide 4.15.1 mobile-android/vendor Java 4.16.0 BAJO Actualizar en build.gradle
RxJava 3.1.6 mobile-android/vendor Java 3.1.9 BAJO Actualizar; valorar migrar a Coroutines
+ 13 librerías más de bajo riesgo (Gson, OkHttp, Dagger, Prisma, Zod, express, onnxruntime…)
📊 Composición por módulo (normalizada al 100%)
Código propio Terceros embebidos Build / Muerto
backend-api
88%
web-dashboard
69%
mobile-android
18%
mobile-ios
5%
ml-pipeline
44%

Porcentaje = código propio / (código propio + terceros embebidos). Los artefactos de build se representan a escala reducida para visibilidad.

🎯 Plan de acción Q3 2026
Semana 1 — URGENTE
Purgar artefactos del historial git
Ejecutar git filter-repo --path node_modules --invert-paths y --path Pods. Añadir .gitignore completo. Reducción inmediata: ~700 MB del repositorio.
Esfuerzo: 1 día · Impacto: muy alto
Semana 2-3 — PRIORITARIO
Eliminar copias manuales de librerías
Reemplazar axios/lodash copiados por dependencias declaradas. Actualizar axios a 1.7.9 (fix CVE). Unificar DateUtils en paquete compartido @nutritrack/utils.
Esfuerzo: 3 días · Impacto: alto
Semana 4 — PLANIFICAR
Deprecar módulo iOS legacy ObjC
Migrar AFNetworking a URLSession. Reemplazar FBCharts por Swift Charts. Archivar directorio Pods. El módulo NutriCore Swift ya cubre el 80% — completar migración.
Esfuerzo: 2 semanas · Impacto: alto
Sprint Q3 — RECONSTRUIR
Modernizar mobile-android vendor/
Mover todas las dependencias Android a build.gradle (Retrofit, Glide, OkHttp, Dagger). Evaluar migración de RxJava a Kotlin Coroutines. Ratio propio subirá del 18% al 70%+.
Esfuerzo: 1 sprint · Impacto: medio
Sprint Q3 — ML
CMake FetchContent para ml-pipeline
Reemplazar third_party/ vendoreado por CMake FetchContent (OpenBLAS, Eigen, pybind11). Actualizar OpenBLAS a 0.3.28. Limpiar __pycache__ y añadir a .gitignore.
Esfuerzo: 3 días · Impacto: medio
Continuo — CI/CD
Automatizar con Dependabot + SBOM
Activar Dependabot para todos los manifests (package.json, build.gradle, Podfile, requirements.txt, CMakeLists). Generar SBOM automático en cada release. Configurar Renovate para mono-repo.
Esfuerzo: 1 día · Impacto: estructural