API backend para um sistema de compras online, desenvolvida com NestJS, TypeScript e Prisma ORM (SQLite). Permite gerenciar produtos, coleções, carrinho de compras, itens do carrinho e histórico de compras.
- CRUD de produtos
- CRUD de coleções
- Adicionar/remover/atualizar itens no carrinho
- Finalizar compra e histórico de carrinhos
- Cálculo automático do preço total do carrinho
- Busca de múltiplos produtos por array de IDs
- Testes unitários abrangentes (80%+)
pnpm install
pnpm prisma migrate dev
pnpm start:devsrc/products/- Produtossrc/collection/- Coleçõessrc/cart/- Carrinhosrc/cart-item/- Itens do carrinhoprisma/schema.prisma- Modelos do banco
POST /products- Criar produtoGET /products- Listar produtosGET /products/:id- Buscar produto por IDPUT /products/:id- Atualizar produtoDELETE /products/:id- Remover produtoPOST /products/many- Buscar múltiplos produtos por array de IDs
POST /collection- Criar coleçãoGET /collection- Listar coleçõesGET /collection/:id- Buscar coleção por IDPUT /collection/:id- Atualizar coleçãoDELETE /collection/:id- Remover coleção
POST /cart- Criar carrinhoGET /cart/current- Buscar carrinho pendente com itensPOST /cart/finalizar- Finalizar carrinho atualGET /cart/historico- Listar carrinhos finalizados
POST /cart-item- Adicionar item ao carrinho (incrementa quantidade se já existir)PUT /cart-item/:id- Atualizar item do carrinhoDELETE /cart-item/:id- Remover item do carrinho
POST /products
{
"name": "Tênis X",
"description": "Tênis esportivo",
"price": 199.99,
"collectionId": "..."
}POST /cart-item
{
"cartId": "...",
"productId": "...",
"quantity": 2,
"size": "M"
}POST /cart/finalizar- Testes unitários em
src/*/*.spec.ts(Jest) - Cobertura:
pnpm test -- --coverageounpx jest --coverage
Veja prisma/schema.prisma para detalhes dos modelos Product, Cart, CartItem, Colection e enum Size.
A documentação interativa da API está disponível via Swagger.
Após rodar a aplicação, acesse:
Você pode visualizar, testar e explorar todos os endpoints da API diretamente pelo navegador.
- Mensagens de erro amigáveis e validação de dados via DTOs.
- Banco SQLite local para fácil setup.
- Desenvolvido por Gabriel Melo Cavalcanti de Albuquerque
Para dúvidas, sugestões ou melhorias, abra uma issue ou envie um pull request.