API de gerenciamento de entregas desenvolvida durante o curso fullstack da Rocketseat.
O Rocketlog é uma API RESTful para gerenciamento de entregas que permite:
- Controle de usuários com diferentes níveis de acesso
- Gerenciamento de entregas com status de acompanhamento
- Sistema de logs para rastreamento detalhado das entregas
- Autenticação e autorização baseada em JWT
- Node.js - Runtime JavaScript
- Express - Framework web para Node.js
- TypeScript - Superset JavaScript com tipagem estática
- Prisma - ORM para Node.js e TypeScript
- PostgreSQL - Banco de dados relacional
- JWT - Autenticação via tokens
- bcrypt - Criptografia de senhas
- Zod - Validação de esquemas
- Jest - Framework de testes
- Docker - Containerização do banco de dados
- Cadastro e login de usuários
- Dois tipos de usuários:
customer(cliente) esale(vendedor) - Autenticação JWT
- Criação de entregas (apenas vendedores)
- Listagem de entregas
- Atualização de status das entregas
- Status disponíveis:
processing,shipped,delivered
- Criação de logs para acompanhamento detalhado
- Listagem de logs por entrega
- Histórico completo de movimentações
-- Usuários
User {
id String (UUID)
name String
email String
password String (hash)
role UserRole (customer/sale)
createdAt DateTime
updatedAt DateTime
}
-- Entregas
Delivery {
id String (UUID)
userId String
description String
status DeliveryStatus (processing/shipped/delivered)
createdAt DateTime
updatedAt DateTime
}
-- Logs das Entregas
DeliveryLog {
id String (UUID)
description String
deliveryId String
createdAt DateTime
updatedAt DateTime
}- Node.js (versão 18 ou superior)
- Docker e Docker Compose
- Git
- Clone o repositório
git clone https://github.com/seu-usuario/rocketlog.git
cd rocketlog- Instale as dependências
npm install- Configure o banco de dados
# Inicie o PostgreSQL via Docker
docker-compose up -d
# Execute as migrações
npx prisma migrate dev- Configure as variáveis de ambiente
# Crie um arquivo .env na raiz do projeto
cp .env.example .env
# Edite o arquivo .env com suas configurações
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/rocketlog"
JWT_SECRET="seu-jwt-secret-aqui"- Execute o servidor
npm run devA API estará disponível em http://localhost:3333
POST /sessions- Login do usuário
POST /users- Cadastro de usuárioGET /users- Listar usuários (apenas vendedores)
POST /deliveries- Criar entrega (apenas vendedores)GET /deliveries- Listar entregas (apenas vendedores)PATCH /deliveries/:id/status- Atualizar status da entrega (apenas vendedores)
POST /delivery-logs- Criar log de entregaGET /delivery-logs- Listar logs de entregas
Para executar os testes:
# Executar todos os testes
npm test
# Executar testes em modo watch
npm run test:devsrc/
├── app.ts # Configuração do Express
├── server.ts # Inicialização do servidor
├── configs/ # Configurações da aplicação
├── controllers/ # Controladores das rotas
├── database/ # Configuração do banco de dados
├── middlewares/ # Middlewares personalizados
├── routes/ # Definição das rotas
├── tests/ # Testes unitários
├── types/ # Tipagens TypeScript
└── utils/ # Utilitários
A API utiliza JWT (JSON Web Tokens) para autenticação. Para acessar rotas protegidas:
- Faça login através da rota
POST /sessions - Inclua o token no header das requisições:
Authorization: Bearer <seu-token-jwt>
Para fazer o deploy da aplicação:
- Configure as variáveis de ambiente no servidor
- Execute as migrações do banco de dados
- Inicie a aplicação com
npm start
Pedro Ernesto durante o curso fullstack da Rocketseat