Skip to content

pedro18x/Rocketlog

Repository files navigation

🚀 Rocketlog API

API de gerenciamento de entregas desenvolvida durante o curso fullstack da Rocketseat.

📋 Descrição

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

🛠️ Tecnologias Utilizadas

  • 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

🏗️ Funcionalidades

Usuários

  • Cadastro e login de usuários
  • Dois tipos de usuários: customer (cliente) e sale (vendedor)
  • Autenticação JWT

Entregas

  • Criação de entregas (apenas vendedores)
  • Listagem de entregas
  • Atualização de status das entregas
  • Status disponíveis: processing, shipped, delivered

Logs de Entregas

  • Criação de logs para acompanhamento detalhado
  • Listagem de logs por entrega
  • Histórico completo de movimentações

🗃️ Estrutura do Banco de Dados

-- 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
}

🔧 Configuração e Instalação

Pré-requisitos

  • Node.js (versão 18 ou superior)
  • Docker e Docker Compose
  • Git

Passos para instalação

  1. Clone o repositório
git clone https://github.com/seu-usuario/rocketlog.git
cd rocketlog
  1. Instale as dependências
npm install
  1. Configure o banco de dados
# Inicie o PostgreSQL via Docker
docker-compose up -d

# Execute as migrações
npx prisma migrate dev
  1. 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"
  1. Execute o servidor
npm run dev

A API estará disponível em http://localhost:3333

📚 Documentação das Rotas

Autenticação

  • POST /sessions - Login do usuário

Usuários

  • POST /users - Cadastro de usuário
  • GET /users - Listar usuários (apenas vendedores)

Entregas

  • POST /deliveries - Criar entrega (apenas vendedores)
  • GET /deliveries - Listar entregas (apenas vendedores)
  • PATCH /deliveries/:id/status - Atualizar status da entrega (apenas vendedores)

Logs de Entregas

  • POST /delivery-logs - Criar log de entrega
  • GET /delivery-logs - Listar logs de entregas

🧪 Testes

Para executar os testes:

# Executar todos os testes
npm test

# Executar testes em modo watch
npm run test:dev

📁 Estrutura do Projeto

src/
├── 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

🔐 Autenticação

A API utiliza JWT (JSON Web Tokens) para autenticação. Para acessar rotas protegidas:

  1. Faça login através da rota POST /sessions
  2. Inclua o token no header das requisições:
Authorization: Bearer <seu-token-jwt>

🚀 Deploy

Para fazer o deploy da aplicação:

  1. Configure as variáveis de ambiente no servidor
  2. Execute as migrações do banco de dados
  3. Inicie a aplicação com npm start

👨‍💻 Desenvolvido por

Pedro Ernesto durante o curso fullstack da Rocketseat

About

API de gerenciamento de entregas, desenvolvido com Node.js, Express.js, TypeScript, Prisma/PostgreSQL, Jest e Docker.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors