Sube un proyecto y recibe una explicación generada con IA local de su estructura y sus módulos
Entrar en un proyecto que no conoces es el trabajo más lento de un desarrollador: averiguar qué hace cada carpeta, dónde está la lógica de negocio y por dónde empezar a leer. Si el proyecto no tiene documentación —y casi nunca la tiene— pueden irse días.
ExplainMyCodebase automatiza ese primer paso. Subes el proyecto comprimido, la herramienta lo descomprime, recorre su estructura, parsea los ficheros y genera con IA local una explicación de qué es cada módulo y cómo se relacionan. El resultado es un árbol de carpetas navegable junto al análisis.
Está construido con Next.js 14 usando App Router en el frontend y un backend Express que se encarga de la subida, la descompresión y el parseo antes de hablar con Ollama. El modelo corre en local: el código que subes no viaja a ningún proveedor externo, que es un requisito bastante razonable cuando se trata del código de tu empresa.
Formulario de subida del proyecto comprimido, gestionado en el backend con Multer.
Árbol de carpetas navegable del proyecto analizado.
Presentación del análisis generado por el modelo.
Indicador del estado del servicio de Ollama: si no está levantado, el usuario lo sabe antes de subir nada.
services/ollamaService.js — comunicación con el modelo local y
construcción de los prompts.
utils/fileParser.js — descompresión con adm-zip y
lectura de los ficheros del proyecto.
Dos aplicaciones separadas. El frontend es Next.js 14 con App
Router: app/page.tsx para la subida y app/result/page.tsx
para el resultado. El backend es un Express mínimo cuyo trabajo es
recibir el fichero, descomprimirlo, parsearlo y orquestar las llamadas a Ollama.
La separación tiene una razón práctica: descomprimir y recorrer un proyecto grande es trabajo intensivo de disco que no encaja en una función serverless de Next.
ExplainMyCodebase/ ├── backend/ │ ├── index.js # servidor Express │ ├── services/ # ollamaService.js │ ├── utils/ # fileParser.js │ ├── uploads/ # proyectos recibidos │ └── .env.example └── frontend/ ├── app/page.tsx # formulario de subida ├── app/result/page.tsx # resultado del análisis ├── app/OllamaStatusBadge.tsx └── components/ # FolderTree, AnalysisResult, UploadForm
Modelo de lenguaje ejecutado en local que genera las explicaciones. El indicador de estado avisa si el servicio no está disponible.
Descompresión del proyecto subido para poder recorrer su estructura real.
Gestión de la subida del fichero en el backend Express.
adm-zip extrae el contenido en el
directorio de trabajo.fileParser construye el árbol
de carpetas y lee los ficheros relevantes.ollamaService construye los prompts y
pide al modelo la explicación de cada módulo.
No se puede meter un proyecto entero en un prompt: cualquier repositorio real excede
la ventana de contexto. El trabajo interesante está en fileParser, que
decide qué leer y qué ignorar, y en trocear el análisis por módulos en lugar de
intentar explicarlo todo de una vez.
La herramienta se usa sobre proyectos que no son tuyos, muchas veces de una empresa. Enviarlos a una API en la nube es exactamente lo que un acuerdo de confidencialidad prohíbe. Ollama en local convierte la herramienta en algo que se puede usar de verdad en un entorno profesional.
Si Ollama no está corriendo, el usuario sube un proyecto, espera y recibe un error.
El OllamaStatusBadge existe para invertir ese orden: se comprueba
primero y se avisa antes. Es un componente pequeño que evita el fallo más común de
la herramienta.
Next.js podría haber hecho ambas cosas, pero descomprimir un ZIP grande y recorrerlo es un proceso largo con acceso intensivo a disco, que encaja mal con el modelo de ejecución de sus rutas de API. Un Express dedicado lo resuelve sin pelearse con el framework.
Desarrollador full stack — autor único.
Frontend Next.js con App Router, backend Express, servicio de comunicación con Ollama, parser de proyectos y componentes de visualización del análisis.
Proyecto funcional con frontend y backend operativos. Requiere Ollama corriendo en local. La calidad del análisis depende directamente del modelo que se use.
El código está en el repositorio Proyectos-Personales, dentro de la
carpeta ExplainMyCodebase/.