E-commerce API
API REST de e-commerce desenvolvida como projeto de estudo e portfólio, com foco em organização backend, validação de dados e persistência relacional.
✦ O problema
Um fluxo de e-commerce precisa manter usuários, catálogo, pedidos e estoque consistentes. Esta API reúne essas operações em endpoints organizados e aplica as regras principais no servidor, evitando confiar em valores enviados pelo cliente.
✦ O que é
Uma API REST construída com NestJS e Fastify, usando PostgreSQL para persistência e Prisma para acesso aos dados. Os módulos são separados por domínio e os serviços dependem de contratos de repositório, mantendo a lógica de negócio separada da implementação de persistência.
✦ Funcionalidades
- ▸CRUD de usuários, categorias e produtos
- ▸Filtro de produtos por categoria e parte do nome
- ▸Criação e consulta de pedidos, com filtro opcional por usuário
- ▸Cálculo do total no servidor e registro do preço unitário no momento da compra
- ▸Baixa de estoque na criação do pedido e reposição no cancelamento
- ▸Validação de dados e variáveis de ambiente com Zod
- ▸Hash de senhas com Argon2 e tratamento global de exceções
✦ Endpoints principais
Principais operações disponíveis na API, agrupadas por recurso. Consulte a documentação interativa para ver os parâmetros e os formatos de resposta.
Usuários
POST /users · GET /users · GET /users/:id · PUT /users/:id · DELETE /users/:id
Categorias
POST /categories · GET /categories · GET /categories/:id · PATCH /categories/:id · DELETE /categories/:id
Produtos
POST /products · GET /products · GET /products/:id · PATCH /products/:id · DELETE /products/:id
Pedidos
POST /orders · GET /orders · GET /orders/:id · PATCH /orders/:id/cancel
✦ Regras de negócio
Os pedidos são calculados no servidor, preservam o preço unitário no momento da compra e atualizam o estoque dentro de transações. O cancelamento só repõe o estoque quando o pedido é efetivamente cancelado, evitando reposições duplicadas.
✦ Arquitetura
A aplicação é organizada em módulos de domínio e utiliza o padrão Repository para separar os serviços da persistência. As operações de pedido utilizam transações para manter pedido e estoque consistentes.
✦ Escopo atual
O projeto não implementa autenticação nem autorização. Foi desenvolvido para demonstrar conceitos de backend e não deve ser usado em produção com dados reais sem as proteções necessárias.