SaaS Starter

AI-ready

Como este boilerplate está otimizado para que um agente de IA escreva código que funcione.

Filosofia

LLMs não leem sua mente — leem seu código. Um boilerplate AI-friendly minimiza ambiguidade: tipos exatos, padrões repetidos, ADRs explícitos.

Tipos como contrato

@app/contracts exporta schemas Zod e tipos inferidos. Um agente que olha o contract sabe exatamente qual payload enviar e o que esperar de volta. Sem documentação que desatualiza.

import { CreateUserInput } from '@app/contracts';
// O tipo é a doc.

Branded IDs

UserIdOrganizationIdstring. Se um agente confunde um com o outro, o TS server pega antes do commit. Menos bugs sutis.

Result no lugar de throws

LLMs propagam erros melhor quando são valores. Result<T, E> mapeia naturalmente para JSON, para testes, para docs.

ADRs versionados

docs/adr/ documenta decisões arquiteturais (por que BetterAuth, por que billing agnóstico ao provider). Um agente lê o ADR antes de propor uma mudança que o contradiga.

Generators

bun run gen:domain <name> gera o scaffold de um aggregate completo (entity, VOs, repo, use cases, controller, testes). O agente segue o padrão existente sem inventar um novo.

MCP-friendly

Schemas Prisma + OpenAPI gerado em apps/server/openapi.json. Qualquer agente com tools OpenAPI explora a API sem adivinhar.

Padrões repetidos

Cada aggregate tem a mesma estrutura (domain/, application/, infrastructure/, interface/). Um LLM aprende o padrão em um domínio e replica no próximo sem fricção.

Nesta página