Case study / MVP concluído
Goomer Menu API
API RESTful completa para gerenciamento de cardápio de restaurante: produtos, promoções com horários e endpoint consolidado de menu com promoções ativas em tempo real.
Problema e usuário
Representar produtos, promoções e disponibilidade de um cardápio de restaurante.
Meu papel
Desenvolvimento do backend e documentação da evolução.
Escopo entregue
- CRUD completo de produtos (name, price, category, visible)
- CRUD completo de promoções com horários por dia da semana
- Endpoint GET /menu que retorna apenas produtos visíveis + melhor promoção ativa no momento (LEFT JOIN LATERAL)
- Validação de schemas com TypeBox
- Transações PostgreSQL na criação/atualização de promoções
- Arquitetura em camadas (Routes → Controllers → Services → Repositories)
- Prisma usado apenas para schema e migrations; queries em SQL puro
- Testes unitários dos services
- Docker Compose para o banco
- Health check
Restrições
- Recorte de MVP do desafio técnico.
- Sem autenticação ou autorização nesta versão.
- Demonstração local, sem deploy em produção.
Arquitetura e fluxo de dados
Fastify organiza o HTTP em camadas (Routes → Controllers → Services → Repositories). O Prisma cuida apenas do schema e das migrations; as queries de produtos, promoções e menu são escritas em SQL puro sobre o pool do PostgreSQL.
Decisões e trade-offs
Separo o Prisma (schema e migrations) do SQL puro nas queries para ter controle total e performance. O LEFT JOIN LATERAL seleciona a melhor promoção ativa em uma única query. Transações manuais com pg garantem atomicidade entre a promoção e seus horários. A validação acontece em duas camadas: TypeBox no schema e regras de negócio no service (intervalo mínimo de 15 min, fim após o início).
Testes e validações
Testes unitários dos services (produtos, promoções e menu) com Vitest e revisão do código e da documentação pública em 22/09/2026. A execução deste projeto não faz parte da validação do portfólio.
O que existe hoje
MVP concluído com CRUD completo de produtos e promoções, endpoint /menu com promoções ativas em tempo real e testes unitários dos services.
Limitações conhecidas
- Sem autenticação ou autorização nesta versão.
- Sem paginação nos list endpoints.
- Ambiente de demonstração local (não está deployado em produção).
Próximas etapas
- Autenticação
- Paginação e filtros
- Deploy + CI
Formação relacionada
- Aceleração Santander - Boas Práticas de Segurança em Vibe Coding ↗
Documentar arquitetura (user-flow, data-flow, ERD) antes de escrever código é a prática oposta ao vibe coding sem controle — disciplina que este certificado reforça.
- Backend - Projeto Final ↗
Base de TypeScript, SQL e Prisma relacionada à arquitetura planejada da API.
Stack
- TypeScript
- Fastify
- Node.js
- PostgreSQL 16
- Prisma (migrations)
- SQL puro (queries)
- TypeBox
- Vitest
- Docker + Docker Compose
Carregando documentação do repositório…