SaaS Starter

AI-ready

Cómo este boilerplate está optimizado para que un agente de IA escriba código que funcione.

Filosofía

Los LLMs no leen tu mente — leen tu código. Un boilerplate AI-friendly minimiza la ambigüedad: tipos exactos, patrones repetidos, ADRs explícitos.

Tipos como contrato

@app/contracts exporta schemas Zod y tipos inferidos. Un agente que mira el contract sabe exactamente qué payload mandar y qué esperar de vuelta. Sin documentación que se desactualiza.

import { CreateUserInput } from '@app/contracts';
// El tipo es la doc.

Branded IDs

UserIdOrganizationIdstring. Si un agente confunde uno con otro, el TS server lo detecta antes del commit. Menos bugs sutiles.

Result en lugar de throws

Los LLMs propagan errores mejor cuando son valores. Result<T, E> se mapea naturalmente a JSON, a tests, a docs.

ADRs versionados

docs/adr/ documenta decisiones arquitectónicas (por qué BetterAuth, por qué billing agnóstico al proveedor). Un agente lee la ADR antes de proponer un cambio que la contradiga.

Generadores

bun run gen:domain <name> genera el scaffold de un agregado completo (entity, VOs, repo, use cases, controller, tests). El agente sigue el patrón existente sin inventar uno nuevo.

MCP-friendly

Schemas de Prisma + OpenAPI generado en apps/server/openapi.json. Cualquier agente con tools de OpenAPI explora el API sin adivinar.

Patrones repetidos

Cada agregado tiene la misma estructura (domain/, application/, infrastructure/, interface/). Un LLM aprende el patrón en un dominio y lo replica en el siguiente sin fricción.

En esta página