Arquitecta tu equipo SDD perfecto en segundos.
Analizá tu lista de modelos LLM y obtené el equipo óptimo para cada fase del flujo Spec-Driven Development.
SDD Team Optimizer es una herramienta web que recibe tu lista de modelos de lenguaje y asigna automáticamente el modelo óptimo a cada una de las 10 fases del workflow Spec-Driven Development (SDD):
Explorá → Proponé → Especificá → Diseñá → Planificá → Implementá → Verificá → Archivá
El motor de scoring evalúa contexto, costo, capacidades y un fallback jerárquico para generar tres perfiles de equipo: PREMIUM, BALANCED y ECONOMIC.
| Feature | Descripción |
|---|---|
| 🧠 Optimizer | Pegás tu lista de modelos, obtenés 3 perfiles completos con scoring por fase |
| 🎯 SDD Orchestrator | Recomendación fija del modelo orquestador (Claude Opus 4.5 + 3 fallbacks) |
| 📊 DataMatrix | Grid 2×5 de las 10 fases SDD con primario + fallbacks clicables |
| 🪟 ModelDetailModal | Modal con score, reasoning, capacidades y specs del modelo |
| ⚖️ ComparisonTable | Comparación side-by-side de los 3 perfiles con export a texto |
| 🔄 OpenRouter Sync | Sincronización automática de modelos desde OpenRouter API |
| 🤖 Gemini AI | Categorización inteligente de modelos por tier y fortalezas |
| 📝 Historial | Persistencia de todas las optimizaciones realizadas |
| 🌐 i18n | Español / Inglés |
| 📋 Copy & Export | Copiá la lista de modelos o exportá el perfil completo en JSON |
Next.js 15 (App Router + Turbopack)
Tailwind CSS 4 — Kanagawa palette, 0px radius (Architectural Brutalism)
Prisma ORM + PostgreSQL 16 — modelo relacional completo
Gemini AI — categorización de modelos
OpenRouter API — sync de catálogo de modelos
Docker Compose — Next.js + PostgreSQL + Nginx
Requisitos: Docker + Docker Compose
# 1. Clonar el repo
git clone https://github.com/RamonsDka/ssd-optimizer-v1.git
cd ssd-optimizer-v1
# 2. Configurar variables de entorno
cp .env.example .env
# Editá .env y completá las API keys
# 3. Levantar el stack
docker compose up -d
# 4. Correr migraciones (primera vez)
docker exec sdd_optimizer_app npx prisma migrate deploy
# 5. Seed inicial (opcional)
docker exec sdd_optimizer_app npx ts-node prisma/seed.tsAbrí http://localhost:8081 — el optimizer está listo.
Requisitos: Node.js 22+, PostgreSQL 16
# Instalar dependencias
npm install
# Generar cliente Prisma
npx prisma generate
# Correr migraciones
npx prisma migrate dev
# Levantar dev server
npm run dev # http://localhost:3000Copiá .env.example a .env y completá:
| Variable | Descripción | Requerida |
|---|---|---|
DATABASE_URL |
Connection string PostgreSQL | ✅ |
GEMINI_API_KEY |
API key de Google Gemini | ✅ |
OPENROUTER_API_KEY |
API key de OpenRouter | Opcional |
NEXT_PUBLIC_APP_URL |
URL pública del app | Opcional |
ssd-optimizer-v1/
├── app/ # App Router — páginas y API routes
│ ├── api/
│ │ ├── optimize/ # POST — motor principal de optimización
│ │ ├── models/ # GET/POST — CRUD de modelos
│ │ ├── sync/ # POST — sync OpenRouter
│ │ ├── history/ # GET — historial de runs
│ │ └── settings/ # GET/POST — configuración
│ ├── optimizer/ # Página principal del optimizer
│ ├── models/ # Catálogo de modelos
│ ├── history/ # Historial de optimizaciones
│ ├── profiles/ # Perfiles guardados
│ └── settings/ # Configuración y API keys
│
├── components/
│ ├── optimizer/ # DataMatrix, PhaseCard, ModelDetailModal...
│ ├── landing/ # Hero, AuthorSection, LanguageToggle
│ └── layout/ # Shell, Topbar, Sidebar
│
├── lib/
│ ├── optimizer/ # Parser, scoring engine, selector
│ ├── ai/ # Cliente Gemini
│ ├── sync/ # OpenRouter sync
│ ├── db/ # Prisma client singleton
│ ├── hooks/ # useCopyFeedback, useOptimizerPersistence
│ └── i18n/ # LanguageProvider, translations
│
├── prisma/
│ ├── schema.prisma # Modelos: Model, OptimizationJob, PhaseRecommendation...
│ └── seed.ts # Seed inicial de modelos
│
├── types/ # Tipos TypeScript compartidos
├── Dockerfile # Multi-stage build (node:22-alpine)
├── docker-compose.yml # Stack completo con healthchecks
└── nginx.conf # Reverse proxy → puerto 8081
┌─────────────────────────────────────────────┐
│ Nginx :8081 │
└──────────────────┬──────────────────────────┘
│
┌──────────────────▼──────────────────────────┐
│ Next.js App :3000 │
│ ┌────────────┐ ┌─────────────────────┐ │
│ │ App Router│ │ API Routes │ │
│ │ (UI/UX) │ │ /optimize │ │
│ └────────────┘ │ /models │ │
│ │ /sync │ │
│ ┌────────────────▼─────────────────┐ │ │
│ │ Scoring Engine │ │ │
│ │ Parser → Selector → Fallbacks │ │ │
│ └────────────────┬─────────────────┘ │ │
│ │ │ │
│ ┌────────────────▼──────┐ │ │
│ │ Gemini AI Client │ │ │
│ └───────────────────────┘ │ │
└────────────────────────┬───────────────┘ │
│ │
┌────────────────────────▼───────────────────┘
│ PostgreSQL :5434 │
│ Models · OptimizationJobs · Selections │
└─────────────────────────────────────────────┘
npm run dev # Dev server con Turbopack
npm run build # Build de producción (incluye prisma generate)
npm run start # Producción local
npm run db:migrate # Aplica migraciones en producciónMIT — hacé lo que quieras con esto. Si lo usás en algo copado, contame. 🤙
by RamonsDka
