Skip to content

DarnerDiaz/github-repo-analyzer

Repository files navigation

🤖 GitHub Repository Analyzer - AI-Powered Code Analysis

Analyze any GitHub repository using AI-powered insights and interactive conversations

Version Next.js React TypeScript Gemini AI License GitHub Stars

🚀 Features💻 Stack📦 Setup🤝 Contributing


✨ Acerca del Proyecto

GitHub Repository Analyzer es una aplicación web inteligente que usa Google Gemini AI para analizar repositorios de GitHub. Permite hacer preguntas interactivas sobre la estructura, funcionalidad y código de cualquier repo público.

Casos de uso:

  • 📚 Aprender cómo están estructurados proyectos populares
  • 🔍 Analizar código de competidores o inspiración
  • 💬 Tener conversaciones sobre cualquier repositorio
  • 📖 Generar documentación automáticamente
  • 🚀 Encontrar patrones y mejores prácticas

✨ Características Principales

Chat Interactivo: Haz preguntas sobre cualquier repositorio de GitHub usando Google Gemini AI 📊 Análisis de Repositorio: Análisis automático de la estructura, lenguajes y archivos clave del repositorio 📖 Visualización de README: Ver y analizar archivos README de repositorios 🔍 Búsqueda de Código: Busca y visualiza archivos específicos dentro de repositorios 📝 Generación de Documentación: Genera automáticamente documentación completa para repositorios 🎨 Interfaz Moderna: Interfaz limpia y responsive construida con React y Tailwind CSS 💾 Historial Persistente: Guarda análisis y chat en SQLite con sincronización automática 🕐 Historial de Conversaciones: Accede a conversaciones anteriores desde la barra lateral 🛡️ Mejor Manejo de Errores: Error boundaries, toasts y validación robusta con Zod ⚡ API RESTful Tipada: Endpoints para guardar y recuperar análisis con TypeScript tipos seguros 🔄 Windows Compatible: Timeout y retry logic especial para SQLite en Windows

Stack Tecnológico

  • Frontend: Next.js 16.1.6 con Turbopack, React 19 y TypeScript 5
  • Backend: API Routes de Next.js con Zod validation
  • Base de Datos: SQLite + Prisma ORM 5.18.0 (LTS)
    • Optimizado para Windows (timeout: 10 segundos)
    • Exponential backoff retry logic (100ms → 200ms → 400ms)
  • Estilos: Tailwind CSS 4 + lucide-react (480+ iconos)
  • IA: Google Gemini API (generative-ai)
  • Integración GitHub: Octokit REST API
  • Validación: Zod con type inference seguro
  • Build: Turbopack para compilación ultra-rápida (3.9s)

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Node.js 18+ y npm/yarn instalados
  • Una clave de API de Google Gemini (obtén una en Google AI Studio)
  • (Opcional) Un Token de Acceso Personal de GitHub para límites de tasa más altos

Instalación

Opción 1: Setup Automático (Recomendado)

Windows:

setup.bat

Linux/macOS:

bash setup.sh

Opción 2: Setup Manual

  1. Clona el repositorio

    git clone https://github.com/DarnerDiaz/github-repo-analyzer.git
    cd github-repo-analyzer
  2. Instala las dependencias

    npm install
  3. Configura las variables de entorno

    # Copia el archivo de ejemplo
    cp .env.example .env.local
    
    # Edita .env.local y agrega tus claves de API
    nano .env.local  # o tu editor favorito

    Variables de entorno requeridas:

    • NEXT_PUBLIC_GEMINI_API_KEY: Tu clave de API de Google Gemini
    • GITHUB_TOKEN (opcional): Token de Acceso Personal de GitHub
    • DATABASE_URL: Ruta a la base de datos SQLite (incluida por defecto)
  4. Configura la base de datos

    npx prisma migrate dev

    Nota para Windows: La base de datos SQLite está configurada con un timeout de 10 segundos para evitar bloqueos de archivos. Las operaciones del API incluyen retry logic exponencial automático.

  5. Inicia el servidor de desarrollo

    npm run dev
  6. Abre tu navegador Navega a http://localhost:3000

Verificar Instalación

Después de iniciar el servidor, deberías ver:

  • ✅ Servidor corriendo en http://localhost:3000
  • ⚠️ Advertencia sobre NEXT_PUBLIC_GEMINI_API_KEY (normal, configuralo para habilitar IA)
  • 💾 Base de datos SQLite creada en ./dev.db

Uso

  1. Ingresa un Repositorio

    • Ingresa una URL de GitHub (ej: https://github.com/facebook/react)
    • O simplemente usa el formato propietario/repositorio (ej: facebook/react)
  2. Ver Análisis del Repositorio

    • Ve las estadísticas del repositorio (estrellas, forks, lenguaje)
    • Explora el archivo README
    • Verifica los archivos clave identificados y lenguajes principales
  3. Chatea sobre el Repositorio

    • Haz preguntas sobre la estructura del código
    • Solicita explicaciones de componentes
    • Obtén información sobre funcionalidad y patrones de diseño
  4. Genera Documentación

    • Genera automáticamente documentación completa
    • Obtén un análisis estructurado del repositorio

Configuración de Claves de API

Google Gemini API

  1. Visita Google AI Studio
  2. Haz clic en "Create API Key"
  3. Copia la clave en tu archivo .env.local

Token de GitHub (Opcional)

  1. Ve a GitHub Settings → Personal Access Tokens
  2. Haz clic en "Generate new token"
  3. Selecciona los permisos: repo, read:user
  4. Copia el token en tu archivo .env.local

Estructura del Proyecto

src/
├── app/
│   ├── api/                    # API Routes
│   │   ├── repositories/       # Guardar análisis
│   │   ├── chat/               # Sesiones de chat y mensajes
│   │   └── history/            # Obtener historial
│   ├── layout.tsx              # Layout raíz
│   ├── page.tsx                # Página principal
│   └── globals.css             # Estilos globales
├── components/
│   ├── Chat/                   # Interfaz de chat
│   ├── RepositoryInput/        # Formulario de entrada
│   ├── CodeViewer/             # Vista previa de código
│   ├── DocumentationViewer/    # Visualizador de documentación
│   ├── HistorySidebar/         # Barra lateral de historial
│   ├── ErrorBoundary/          # Error boundary
│   ├── Toast/                  # Notificaciones
│   └── Skeleton/               # Loaders de esqueleto
├── lib/
│   ├── github.ts               # Integración GitHub API
│   ├── gemini.ts               # Integración Gemini AI
│   ├── prisma.ts               # Cliente Prisma
│   ├── env.ts                  # Validación de variables de entorno
│   ├── api.ts                  # Utilidades de API
│   ├── middleware.ts           # Middleware de error handling
│   ├── hooks/                  # Custom React hooks
│   │   ├── useRepositoryAnalysis.ts
│   │   ├── useChatSession.ts
│   │   ├── useChatMessages.ts
│   │   └── useHistory.ts
│   └── utils.ts                # Funciones de utilidad
├── types/
│   └── index.ts                # Definiciones de tipos TypeScript
└── generated/                  # Generado por Prisma
    └── prisma/                 # Cliente de Prisma

prisma/
├── schema.prisma               # Esquema de base de datos
├── dev.db                      # Base de datos SQLite
└── migrations/                 # Historial de migraciones

Funciones Clave

getRepositoryInfo(owner: string, repo: string)

Obtiene información básica del repositorio incluyendo estrellas, forks e idioma.

analyzeRepository(owner: string, repo: string)

Realiza un análisis profundo de la estructura del repositorio, identifica archivos clave y obtiene el README.

sendMessageToGemini(request: ChatRequest)

Envía un mensaje a la API de Google Gemini con contexto del repositorio para respuestas inteligentes.

generateDocumentation(repositoryContent: string, repoName: string)

Genera automáticamente documentación completa usando IA.

Preguntas de Ejemplo

Intenta preguntarle a la IA:

  • "¿Qué hace este repositorio?"
  • "Muéstrame el punto de entrada principal de este proyecto"
  • "¿Qué lenguajes de programación se usan en este proyecto?"
  • "Explica la arquitectura de este repositorio"
  • "¿Cuáles son las dependencias principales?"
  • "¿Cómo empiezo con este proyecto?"

Despliegue

Desplegar en Vercel (Recomendado)

  1. Sube tu código a GitHub
  2. Visita Vercel
  3. Importa tu repositorio
  4. Agrega tus variables de entorno en el panel de Vercel
  5. ¡Despliega!
# O despliega directamente desde la terminal
npm install -g vercel
vercel

Otras Opciones de Hosting

La aplicación se puede desplegar en cualquier plataforma de hosting de Node.js:

  • AWS Amplify
  • Railway
  • Render
  • Netlify Functions

Resolución de Problemas

Error: "Operations timed out" en Windows

Si ves errores de timeout al guardar datos:

  • Arreglado: DATABASE_URL incluye timeout=10000 automáticamente
  • La aplicación usa exponential backoff retry logic (3 intentos)
  • No requiere configuración manual

Error: "NEXT_PUBLIC_GEMINI_API_KEY is not configured"

  • Esto es normal al primer inicio
  • Ve a Google AI Studio y copia tu clave
  • Agrégala a .env.local y reinicia el servidor

Puerto 3000 ya en uso

# En Windows (PowerShell)
Stop-Process -Name node -Force

# En Linux/macOS
lsof -i :3000 | grep LISTEN | awk '{print $2}' | xargs kill

Build falla en TypeScript

# Regenera los tipos de Prisma
npx prisma generate

# Limpia el build cache
rm -rf .next

# Reinicia el build
npm run build

Limitaciones

  • La API de GitHub tiene límites de tasa (60 solicitudes/hora sin autenticar, 6000 con token)
  • La vista previa de archivos se limita a 5000 caracteres
  • Los archivos binarios no se pueden ver
  • Los repositorios grandes pueden tardar más en analizarse

Contribuir

¡Las contribuciones son bienvenidas! Por favor:

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b feature/caracteristica-increible)
  3. Confirma tus cambios (git commit -m 'Agregar característica increíble')
  4. Sube a la rama (git push origin feature/caracteristica-increible)
  5. Abre un Pull Request

Licencia

Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

Soporte

Para problemas, preguntas o sugerencias:

  1. Consulta la página de Issues
  2. Crea un nuevo issue con información detallada
  3. Incluye los pasos para reproducir si reportas un bug

Documentación

Roadmap

✅ Implementado en v2.0

  • Historial persistente de conversaciones
  • Base de datos SQLite con Prisma
  • API RESTful para guardar y recuperar análisis
  • Validación robusta de entorno con Zod
  • Error boundaries y manejo de errores mejorado
  • Toasts/notificaciones para feedback del usuario
  • Componentes de skeleton loading
  • Barra lateral de historial de chat

📋 Planeado

  • Vista previa de archivos en tiempo real
  • Soporte para repositorios privados
  • Análisis y métricas avanzadas
  • Sugerencias de revisión de código
  • Soporte multidioma
  • Modo oscuro mejorado
  • Exportar análisis como PDF/Markdown
  • Características de colaboración
  • Autenticación de usuario
  • Búsqueda full-text en análisis
  • Tageo y organización de sesiones

Hecho con ❤️ para entusiastas y desarrolladores de GitHub

About

Una aplicación web impulsada por IA que analiza repositorios de GitHub y permite conversaciones interactivas sobre su código, estructura y funcionalidad.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors