POC comparando consumo de tokens do Claude Code ao gerar um CRUD completo nos três frameworks mais usados: Ruby on Rails, NestJS e Next.js.
Assista ao vídeo: youtube.com/watch?v=QiGh9M_EZWs Post original no LinkedIn: linkedin.com/posts/deyvidnascimento
poc-rails-nest-next/
├── poc-rails/ # Ruby on Rails (--api, SQLite)
├── poc-nest/ # NestJS (CLI padrão)
└── poc-nextjs/ # Next.js (TypeScript, App Router)
Mesmo prompt colado identicamente nos três frameworks. Mesmo modelo (claude-sonnet-4-6). Sessão limpa. Zero intervenção.
# Rails
rails new poc-rails --api --database=sqlite3 --skip-javascript --skip-asset-pipeline
# NestJS
npx @nestjs/cli new poc-nest --package-manager npm
# Next.js
npx create-next-app@latest poc-nextjs --typescript --eslint --app --src-dir --no-tailwindCrie um CRUD completo para o recurso "Task" com os campos:
- title (string, obrigatório, máximo 255 caracteres)
- description (text, opcional)
- status (enum: pending, in_progress, done — padrão: pending)
- due_date (date, opcional)
Requisitos:
- Rotas REST completas (index, show, create, update, delete)
- Validações nos campos obrigatórios
- Use SQLite como banco de dados
- Testes automatizados cobrindo os casos principais
- Seed com 5 tarefas de exemplo
Adicione uma interface web para o CRUD de Tasks que já existe.
Requisitos:
- Listagem com filtro por status
- Formulário de criação e edição
- Botão de deletar com confirmação
- Layout simples e funcional, sem framework CSS externo
- Tudo conectado ao backend que já existe
O Rails foi criado com
--api(sem views). O Claude precisou criar o frontend do zero — intencional. Nivela o campo.
| Métrica | Rails | NestJS | Next.js |
|---|---|---|---|
| Custo total | $0,26 | $0,59 | $0,68 |
| Tokens output | 5,2k | 17,6k | 15,1k |
| Cache read | 407,1k | 687,2k | 1,1M |
| Cache write | 15,4k | 30,4k | 34,6k |
| Linhas adicionadas | 232 | 477 | 463 |
| Tempo API | 1m 29s | 3m 22s | 3m 30s |
| Rodou sem erro? | Sim | Sim | Sim |
| Métrica | Rails | NestJS | Next.js |
|---|---|---|---|
| Custo total | $0,58 | $1,11 | $0,73 |
| Tokens output | 23,8k | 51,4k | 18,7k |
| Cache read | 394,1k | 812,8k | 1,1M |
| Cache write | 27,4k | 25,0k | 27,6k |
| Linhas adicionadas | 721 | 1.018 | 1.019 |
| Tempo API | 5m 11s | 9m 46s | 4m 00s |
| Rodou sem erro? | Sim | Conflito de porta (resolvido) | Sim |
| Métrica | Rails | NestJS | Next.js |
|---|---|---|---|
| Custo total | $0,84 | $1,70 | $1,41 |
| Tokens output | 29,0k | 69,0k | 33,8k |
| Linhas totais | 953 | 1.495 | 1.482 |
| Tempo API total | 6m 40s | 13m 08s | 7m 30s |
| Comparação | Backend | Total |
|---|---|---|
| NestJS vs Rails | 2,3x mais caro | 2,0x mais caro |
| Next.js vs Rails | 2,6x mais caro | 1,7x mais caro |
| NestJS vs Next.js | — | Nest 20% mais caro |
A tese inicial era: framework com opinião gasta menos token. O Rails provou isso. O Nest quebrou o padrão.
O Nest tem opinião sobre estrutura — módulos, controllers, services, DTOs — mas cada "opinião" gera um arquivo novo, uma classe nova, um decorator novo. A IA obedece e produz boilerplate proporcional: 51k tokens de output só no frontend, quase 3x o Next.
A conclusão real: não é framework com opinião que economiza token. É framework com convenção madura e linguagem densa. O Rails comprime: uma migration são 5 linhas, um model com validação são 3. O Nest organiza, mas é verboso. E verbosidade custa token.
Na era da IA escrevendo código: linguagem densa + convenção madura = menos token.
# Rails
cd poc-rails
bundle install
rails db:setup
rails server
# NestJS
cd poc-nest
npm install
npm run start:dev
# Next.js
cd poc-nextjs
npm install
npm run devFeito por @manodeyvin