El problema que siempre encontraba
Cada vez que practicaba diseño de sistemas, me topaba con el mismo muro: esbozaba una idea para “diseñar WhatsApp” o “crear un acortador de URLs”, y luego… nada. Sin retroalimentación. Sin saber si mi elección de Kafka sobre RabbitMQ estaba justificada o era solo imitación sin criterio. Nadie que preguntara “oye, ¿cuál es tu requisito de latencia?”.
Las entrevistas reales tienen un humano que te guía con las preguntas correctas. La práctica en solitario no. Por eso construí Arcwise.
“Construí Arcwise porque practicar diseño de sistemas solo es como aprender a nadar leyendo un libro. Necesitas a alguien que te empuje, te corrija y te desafíe.”
Qué hace Arcwise
Arcwise es un coach de diseño de sistemas open source impulsado por IA. Plantea cualquier problema y te guía a través del proceso completo de diseño, tal como una sesión de entrevista real.
El flujo es el siguiente:
Describe ──▶ Clarifica ──▶ Diseña ──▶ Refina ──▶ Revisa
- Describe — Ingresa “Diseña una plataforma de viajes compartidos como Uber” o elige entre problemas predefinidos (WhatsApp, Twitter, Netflix, YouTube…)
- Clarifica — La IA hace 5 preguntas específicas: tráfico esperado, modelo de consistencia, objetivos de latencia, alcance geográfico, restricciones clave
- Diseña — Según tus respuestas, genera un diagrama de arquitectura Mermaid en vivo
- Refina — Conversa con la IA: “agrega una capa de caché”, “cambia a consistencia eventual”, “¿cómo manejaría 10M de usuarios activos diarios?”
- Revisa — Obtén una calificación desglosada en 5 dimensiones (del 1 al 10 cada una)
| Dimensión | ¿Qué mide? |
|---|---|
functional_coverage | ¿Se cubren todos los requisitos principales? |
nfr_handling | Escalabilidad, latencia, disponibilidad |
component_justification | ¿Las decisiones técnicas están explicadas y son adecuadas? |
tradeoff_awareness | ¿El diseño razona sobre los tradeoffs? |
overall | Calidad holística del diseño |
Nada de “¡se ve bien!” sin fundamento — retroalimentación estructurada y real sobre lo que te faltó.
El stack (para los curiosos)
Quería que esto fuera un proyecto de calidad de producción, no un demo de juguete:
| Capa | Tecnología |
|---|---|
| IA | LiteLLM — intercambia entre Claude, GPT-4o, Gemini, Groq u Ollama local desde Configuración |
| Backend | FastAPI · Pydantic v2 · SSE streaming · PostgreSQL (async SQLAlchemy) |
| Frontend | Next.js 16 App Router · React 19 · TypeScript · Zustand |
| Diagramas | Mermaid.js (renderizado DSL en vivo — edita el diagrama directamente o vía chat) |
| Auth | JWT · bcrypt · GitHub OAuth · Google OAuth · SMTP para restablecer contraseña |
| Infra | Docker Compose · sesiones Redis opcionales |
Algo de lo que estoy especialmente orgulloso: LiteLLM como capa de abstracción de IA. Configuras tu clave en .env y todo funciona. Cambias de Claude a GPT-4o o a un modelo local Llama3 sin tocar una línea de código.
Pruébalo en 3 comandos
git clone https://github.com/nithiin7/arcwise.git
cd arcwise
echo "ANTHROPIC_API_KEY=***" > backend/.env
docker compose up
Abre http://localhost:3000. Listo. No necesitas cuenta para empezar — la autenticación es opcional y está desactivada por defecto.
“¿Prefieres otro modelo? Configura
OPENAI_API_KEY,GEMINI_API_KEYoGROQ_API_KEY(o todas) y cámbialo desde la página de Configuración.”
Lo que aprendí construyendo esto
El streaming en la UX importa más de lo que esperaba. Cuando el diagrama se genera token por token y lo ves aparecer en tiempo real, se siente vivo. Almacenar toda la respuesta y mostrarla de golpe se sentía muerto en comparación. El streaming SSE desde FastAPI a Next.js valió la pena la plomería extra.
Mermaid.js está subestimado. Todos recurren a D3 o una librería de grafos cuando necesitan diagramas. Mermaid te da un DSL limpio que un LLM puede generar directamente — sin matemáticas de coordenadas, sin posicionamiento de nodos. El diagrama es solo un string. Eso significa que la IA puede editarlo a través del chat sin lógica especial de manipulación de grafos.
Multi-modelo por defecto fue la decisión correcta. Empecé hardcodeado a Claude, luego agregué un componente ModelSelect y enrutamiento con LiteLLM. En el momento en que Ollama local funcionó — completamente offline, gratis, sin API key — cambió la sensación de todo el proyecto. Ya no es solo un wrapper de Claude.
¿Qué sigue? (y aquí entras tú)
Tengo ideas, pero quiero construir lo que sea realmente útil:
- Exportar a PDF / PNG — artifacts compartibles para entrevistas
- Modo de entrevista cronometrada — cuenta regresiva de 45 minutos con ayudas desactivadas
- Biblioteca comunitaria de problemas — votar y enviar problemas de diseño
- Vista de diff de diagramas — mostrar qué cambió entre rondas de refinamiento
- Modo equipo — colaborar en un diseño en tiempo real
Si alguna de estas te resuena — o tienes una idea completamente diferente — abre un issue o deja un comentario. Leo todo.
Enlaces
- GitHub: github.com/nithiin7/arcwise — una estrella ⭐ ayuda a que más personas lo encuentren
- Issues / Solicitudes de funcionalidad: abre un issue en GitHub
- Contribuciones: consulta CONTRIBUTING.md
Si lo clonas, contáctame — me encantaría saber qué opinas. Si algo está roto, un bug es una excelente excusa para abrir un PR.