14 KiB
Guía de configuración de Resume Matcher
English | Español | 简体中文 | 日本語
¡Bienvenido! Esta guía te acompaña para configurar Resume Matcher en tu máquina local. Tanto si eres desarrollador y quieres contribuir como si solo quieres ejecutarlo localmente, aquí tienes todo lo necesario.
Tabla de contenidos
- Requisitos previos
- Inicio rápido
- Configuración paso a paso
- Configurar tu proveedor de IA
- Despliegue con Docker
- Acceder a la aplicación
- Referencia de comandos comunes
- Solución de problemas
- Estructura del proyecto
- Obtener ayuda
Requisitos previos
Antes de empezar, asegúrate de tener lo siguiente instalado en tu sistema:
| Herramienta | Versión mínima | Cómo comprobarlo | Instalación |
|---|---|---|---|
| Python | 3.13+ | python --version |
python.org |
| Node.js | 22+ | node --version |
nodejs.org |
| npm | 10+ | npm --version |
Viene con Node.js |
| uv | Última | uv --version |
astral.sh/uv |
| Git | Cualquiera | git --version |
git-scm.com |
Instalar uv (gestor de paquetes de Python)
Resume Matcher usa uv para una gestión de dependencias de Python rápida y fiable. Instálalo con:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# O mediante pip
pip install uv
Inicio rápido
Si ya estás familiarizado con herramientas de desarrollo y quieres arrancar rápido:
# 1. Clona el repositorio
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
# 2. Inicia el backend (Terminal 1)
cd apps/backend
cp .env.example .env # Crea la configuración a partir de la plantilla
uv sync # Instala dependencias de Python
uv run app
# 3. Inicia el frontend (Terminal 2)
cd apps/frontend
npm install # Instala dependencias de Node.js
npm run dev # Arranca el servidor de desarrollo
Abre http://localhost:3000 en el navegador y listo.
Nota: antes de usar la app, necesitas configurar un proveedor de IA. Consulta Configurar tu proveedor de IA.
Configuración paso a paso
1. Clonar el repositorio
Primero, trae el código a tu máquina:
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
2. Configurar el backend
El backend es una aplicación Python (FastAPI) que gestiona el procesamiento de IA, el parseo del currículum y el almacenamiento de datos.
Ir al directorio del backend
cd apps/backend
Crear tu archivo de entorno
cp .env.example .env
Editar el archivo .env con tu editor preferido
# macOS/Linux
nano .env
# O usa el editor que prefieras
code .env # VS Code
El ajuste más importante es tu proveedor de IA. Aquí tienes una configuración mínima para OpenAI:
LLM_PROVIDER=openai
LLM_MODEL=gpt-5-nano-2025-08-07
LLM_API_KEY=sk-your-api-key-here
# Mantén estos valores por defecto para desarrollo local
HOST=0.0.0.0
PORT=8000
FRONTEND_BASE_URL=http://localhost:3000
CORS_ORIGINS=["http://localhost:3000", "http://127.0.0.1:3000"]
Instalar dependencias de Python
uv sync
Esto crea un entorno virtual e instala todos los paquetes requeridos.
Iniciar el servidor del backend
RELOAD=true uv run app
Deberías ver una salida como:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process
Deja este terminal ejecutándose y abre un nuevo terminal para el frontend.
3. Configurar el frontend
El frontend es una aplicación Next.js que proporciona la interfaz de usuario.
Ir al directorio del frontend
cd apps/frontend
(Opcional) Crear un archivo de entorno para el frontend
Solo es necesario si tu backend se ejecuta en un puerto distinto:
cp .env.sample .env.local
Instalar dependencias de Node.js
npm install
Iniciar el servidor de desarrollo
npm run dev
Deberías ver:
▲ Next.js 16.x.x (Turbopack)
- Local: http://localhost:3000
Abre http://localhost:3000 en el navegador. Deberías ver el panel de Resume Matcher.
Configurar tu proveedor de IA
Resume Matcher admite múltiples proveedores de IA. Puedes configurarlo desde la página de Settings en la app o editando el archivo .env del backend.
Opción A: Proveedores en la nube
| Proveedor | Configuración | Obtener API key |
|---|---|---|
| OpenAI | LLM_PROVIDER=openaiLLM_MODEL=gpt-5-nano-2025-08-07 |
platform.openai.com |
| Anthropic | LLM_PROVIDER=anthropicLLM_MODEL=claude-haiku-4-5-20251001 |
console.anthropic.com |
| Google Gemini | LLM_PROVIDER=geminiLLM_MODEL=gemini-3-flash-preview |
aistudio.google.com |
| OpenRouter | LLM_PROVIDER=openrouterLLM_MODEL=deepseek/deepseek-chat |
openrouter.ai |
| DeepSeek | LLM_PROVIDER=deepseekLLM_MODEL=deepseek-chat |
platform.deepseek.com |
| OpenAI-Compatible | LLM_PROVIDER=openai_compatibleLLM_MODEL=llama-3.1-8bLLM_API_BASE=http://localhost:8080/v1 |
— (local) |
OpenAI-Compatible apunta a cualquier servidor local que exponga la API Chat Completions de OpenAI — llama.cpp, vLLM, LM Studio, etc. La API key es opcional.
Ejemplo de .env para Anthropic:
LLM_PROVIDER=anthropic
LLM_MODEL=claude-haiku-4-5-20251001
LLM_API_KEY=sk-ant-your-key-here
Opción B: IA local con Ollama (gratis)
¿Quieres ejecutar modelos localmente sin costes de API? Usa Ollama.
Paso 1: Instalar Ollama
Descárgalo e instálalo desde ollama.com
Paso 2: Descargar un modelo
ollama pull gemma3:4b
Otras buenas opciones: mistral, codellama, neural-chat
Paso 3: Configurar tu .env
LLM_PROVIDER=ollama
LLM_MODEL=gemma3:4b
LLM_API_BASE=http://localhost:11434
# LLM_API_KEY no es necesario con Ollama
Paso 4: Asegúrate de que Ollama está en ejecución
ollama serve
Normalmente Ollama se inicia automáticamente tras la instalación.
Despliegue con Docker
¿Prefieres un despliegue en contenedor? Resume Matcher incluye soporte para Docker.
Usando Docker Compose (recomendado)
# Construir e iniciar los contenedores
docker-compose up -d
# Ver logs
docker-compose logs -f
# Detener los contenedores
docker-compose down
Notas importantes sobre Docker
- Las API keys se configuran desde la UI en http://localhost:3000/settings (no mediante archivos
.env) - Los datos se persisten en un volumen de Docker
- Se exponen los puertos del frontend (3000) y del backend (8000)
Acceder a la aplicación
Cuando ambos servidores estén ejecutándose, abre el navegador:
| URL | Descripción |
|---|---|
| http://localhost:3000 | Aplicación principal (Dashboard) |
| http://localhost:3000/settings | Configurar proveedor de IA |
| http://localhost:8000 | Raíz de la API del backend |
| http://localhost:8000/docs | Documentación interactiva de la API |
| http://localhost:8000/health | Health check del backend |
Checklist de primera ejecución
- Abre http://localhost:3000/settings
- Selecciona tu proveedor de IA
- Introduce tu API key (o configura Ollama)
- Haz clic en "Save Configuration"
- Haz clic en "Test Connection" para verificar
- Vuelve al Dashboard y sube tu primer currículum
Referencia de comandos comunes
Comandos del backend
cd apps/backend
# Iniciar servidor de desarrollo (con auto-reload)
RELOAD=true uv run app
# Iniciar servidor de producción
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000
# Instalar dependencias
uv sync
# Instalar con dependencias de desarrollo (para tests)
uv sync --group dev
# Ejecutar tests
uv run pytest
# Verificar si la base de datos requiere reset (se guarda como JSON)
ls -la data/
Comandos del frontend
cd apps/frontend
# Iniciar servidor de desarrollo (con Turbopack para refresco rápido)
npm run dev
# Build para producción
npm run build
# Iniciar servidor de producción
npm run start
# Ejecutar linter
npm run lint
# Formatear código con Prettier
npm run format
# Ejecutar en un puerto diferente
npm run dev -- -p 3001
Gestión de base de datos
Resume Matcher usa TinyDB (almacenamiento en archivos JSON). Todos los datos están en apps/backend/data/:
# Ver archivos de la base de datos
ls apps/backend/data/
# Hacer backup de tus datos
cp -r apps/backend/data apps/backend/data-backup
# Resetear todo (empezar de cero)
rm -rf apps/backend/data
Solución de problemas
El backend no arranca
Error: ModuleNotFoundError
Asegúrate de ejecutar con uv:
uv run uvicorn app.main:app --reload
Error: LLM_API_KEY not configured
Revisa que tu archivo .env tenga una API key válida para el proveedor elegido.
El frontend no arranca
Error: ECONNREFUSED al cargar páginas
El backend no está en ejecución. Inícialo primero:
cd apps/backend && uv run uvicorn app.main:app --reload
Error: errores de build o TypeScript
Limpia la caché de Next.js:
rm -rf apps/frontend/.next
npm run dev
Fallo al descargar PDF
Error: Cannot connect to frontend for PDF generation
El backend no puede acceder al frontend. Comprueba:
- El frontend está en ejecución
FRONTEND_BASE_URLen.envcoincide con tu URL del frontendCORS_ORIGINSincluye la URL del frontend
Si el frontend corre en el puerto 3001:
FRONTEND_BASE_URL=http://localhost:3001
CORS_ORIGINS=["http://localhost:3001", "http://127.0.0.1:3001"]
Fallo de conexión con Ollama
Error: Connection refused to localhost:11434
- Comprueba que Ollama está en ejecución:
ollama list - Inicia Ollama si es necesario:
ollama serve - Asegúrate de que el modelo está descargado:
ollama pull gemma3:4b
Estructura del proyecto
Resume-Matcher/
├─ apps/
│ ├─ backend/ # Python FastAPI backend
│ │ ├─ app/
│ │ │ ├─ main.py # Application entry point
│ │ │ ├─ config.py # Environment configuration
│ │ │ ├─ database.py # TinyDB wrapper
│ │ │ ├─ llm.py # AI provider integration
│ │ │ ├─ routers/ # API endpoints
│ │ │ ├─ services/ # Business logic
│ │ │ └─ schemas/ # Data models
│ │ ├─ prompts/ # LLM prompt templates
│ │ ├─ data/ # Database storage (auto-created)
│ │ ├─ .env.example # Environment template
│ │ └─ pyproject.toml # Python dependencies
│ └─ frontend/ # Next.js React frontend
│ ├─ app/ # Pages (dashboard, builder, etc.)
│ ├─ components/ # Reusable React components
│ ├─ lib/ # Utilities and API client
│ ├─ .env.sample # Environment template
│ └─ package.json # Node.js dependencies
├─ docs/ # Additional documentation
├─ docker-compose.yml # Docker configuration
├─ Dockerfile # Container build instructions
└─ README.md # Project overview
Obtener ayuda
¿Atascado? Estas son tus opciones:
- Comunidad de Discord: dsc.gg/resume-matcher - Comunidad activa para preguntas y discusiones
- Issues de GitHub: Abrir un issue para bugs o solicitudes de funcionalidades
- Documentación: revisa la carpeta docs/agent/ para guías detalladas
Documentación útil
| Documento | Descripción |
|---|---|
| backend-guide.md | Arquitectura del backend y detalles de la API |
| frontend-workflow.md | Flujo de usuario y arquitectura de componentes |
| swiss-design-system/ | Sistema de diseño UI (Swiss International Style) — paquete portable |
¡Feliz creación de currículums! Si Resume Matcher te resulta útil, considera darle una estrella al repo y unirte a nuestro Discord.