Skip to content

jvfsccp/devroast

Repository files navigation

DevRoast

Cole seu código. Receba uma avaliação brutal e honesta.

Projeto construído durante o NLW da Rocketseat, evoluído até uma versão completa com IA, banco de dados e ranking em tempo real.


Sobre

O DevRoast analisa trechos de código com IA e devolve um resultado estruturado com nota, veredito, pontos críticos e sugestão de melhoria.

Além da análise individual, a aplicação mantém um leaderboard com os códigos mais "vergonhosos" já enviados.


Stack do projeto

Frontend

  • Next.js 16 (App Router, React 19, TypeScript)
  • Tailwind CSS v4
  • Base UI (@base-ui/react) para primitives
  • tailwind-variants para variantes de componentes
  • Shiki (tema vesper) para syntax highlight
  • Number Flow (@number-flow/react) para animação de métricas

Backend e dados

  • tRPC v11 com @trpc/tanstack-react-query
  • TanStack React Query v5
  • Drizzle ORM + driver postgres
  • PostgreSQL 16 (Docker)

IA

  • Vercel AI SDK (ai)
  • Google Gemini via @ai-sdk/google (modelo atual: gemini-2.5-flash)

Qualidade e tooling

  • Biome (lint + format)
  • Drizzle Kit (migrations / studio)
  • pnpm

Funcionalidades disponíveis

  • Editor com linguagem detectada automaticamente e seletor manual
  • Roast mode (sarcasmo máximo) com prompt específico para resposta mais agressiva
  • Envio de análise via Server Action com tratamento de erro
  • Análise estruturada por IA com:
    • score de 0 a 10
    • veredito (needs_serious_help até clean_code)
    • roast quote
    • suggested fix
    • 2 a 6 itens de análise por severidade (critical, warning, good)
  • Persistência completa no banco (roasts + analysis_items)
  • Página de resultado por ID (/roast/[id]) com:
    • score ring
    • veredito e quote
    • código original destacado
    • cards de análise detalhada
    • bloco com sugestão de correção
  • Leaderboard na home (preview com top 3)
  • Leaderboard completo (/leaderboard) com top 20, total de submissões e média de score
  • Métricas globais animadas com React Query + Number Flow
  • Estados de loading e fallback de erro em seções assíncronas

Requisitos

  • Node.js 20+
  • pnpm
  • Docker (para subir o PostgreSQL local)

Configuração local

1) Instale dependências

pnpm install

2) Suba o banco Postgres

pnpm db:up

3) Configure variáveis de ambiente

Crie um arquivo .env na raiz com:

DATABASE_URL=postgres://devroast:devroast@localhost:5432/devroast
GOOGLE_GENERATIVE_AI_API_KEY=sua_chave_aqui

4) Rode as migrations

pnpm db:migrate

5) (Opcional) Popule com dados fake

pnpm db:seed

6) Inicie o projeto

pnpm dev

Abra http://localhost:3000 no navegador.


Scripts úteis

pnpm dev          # inicia em desenvolvimento
pnpm build        # build de produção
pnpm start        # sobe build de produção
pnpm lint         # biome check
pnpm format       # biome format --write
pnpm check        # biome check --write

pnpm db:generate  # gera migration
pnpm db:migrate   # aplica migrations
pnpm db:push      # push direto no schema (dev)
pnpm db:studio    # abre Drizzle Studio
pnpm db:up        # sobe PostgreSQL via Docker
pnpm db:seed      # popula banco com dados de teste

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors