E-commerce API
✓ Concluído — 2026

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.

NestJSTypeScriptPostgreSQLPrismaFastifyZodArgon2Docker Composepnpm

✦ 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.

Controller → Service → Abstract Repository → Prisma Repository → PostgreSQL

✦ 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.