https://github.com/fel1324/rocketlog
Projeto desenvolvido durante a formação Full-Stack: Node.js com Containers: API de entregas de encomendas, da Rocketseat.
https://github.com/fel1324/rocketlog
docker express jest jwt nodejs postresql prisma-orm typescript zod
Last synced: 3 months ago
JSON representation
Projeto desenvolvido durante a formação Full-Stack: Node.js com Containers: API de entregas de encomendas, da Rocketseat.
- Host: GitHub
- URL: https://github.com/fel1324/rocketlog
- Owner: Fel1324
- License: mit
- Created: 2025-07-01T23:56:38.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-02T14:14:11.000Z (about 1 year ago)
- Last Synced: 2025-07-02T14:36:18.374Z (about 1 year ago)
- Topics: docker, express, jest, jwt, nodejs, postresql, prisma-orm, typescript, zod
- Language: TypeScript
- Homepage:
- Size: 81.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🚀 Rocketlog
API para gerenciamento de entregas de encomendas, desenvolvida com Node.js, Express, TypeScript, Prisma e PostgreSQL.
## ✨ Funcionalidades
- Cadastro e autenticação de usuários (com roles: `customer` e `sale`)
- Criação e listagem de entregas
- Atualização de status das entregas (`processing`, `shipped`, `delivered`, `canceled`)
- Logs detalhados de cada entrega
- Controle de acesso por autenticação JWT e autorização por perfil
- Validação de dados com Zod
## 🛠️ Tecnologias Utilizadas
- [Node.js](https://nodejs.org/)
- [Express](https://expressjs.com/)
- [TypeScript](https://www.typescriptlang.org/)
- [Prisma ORM](https://www.prisma.io/)
- [PostgreSQL](https://www.postgresql.org/)
- [JWT](https://jwt.io/)
- [Zod](https://zod.dev/)
- [Jest](https://jestjs.io/) + [Supertest](https://github.com/ladjs/supertest) (testes automatizados)
- [Docker](https://www.docker.com/) (para banco de dados)
## 🚀 Como rodar o projeto
### 1. Clone o repositório
```bash
git clone https://github.com/Fel1324/Rocketlog.git
cd Rocketlog
```
### 2. Instale as dependências
```bash
npm install
```
### 3. Configure o ambiente
Crie um arquivo `.env` na raiz do projeto com base no `.env-example`:
```
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/rocketlog?schema=public"
JWT_SECRET=sua_chave_secreta
```
### 4. Suba o banco de dados com Docker
```bash
docker-compose up -d ou docker compose up -d
```
### 5. Execute as migrations do Prisma
```bash
npx prisma migrate deploy
```
### 6. Rode o servidor em modo desenvolvimento
```bash
npm run dev
```
O servidor estará disponível em [http://localhost:3333](http://localhost:3333).
## 🧪 Rodando os testes
```bash
npm run test:dev
```
## 📚 Estrutura de Pastas
```
src/
controllers/
middlewares/
routes/
database/
utils/
types/
tests/
prisma/
schema.prisma
migrations/
```
## 📝 Exemplos de Rotas
### Autenticação
- `POST /sessions` — Login do usuário
### Usuários
- `POST /users` — Cadastro de usuário
### Entregas
- `GET /deliveries` — Listar entregas (apenas `sale`)
- `POST /deliveries` — Criar entrega (apenas `sale`)
- `PATCH /deliveries/:id/status` — Atualizar status (apenas `sale`)
### Logs de Entrega
- `GET /delivery-logs/:delivery_id/show` — Visualizar logs (autorização por role)
- `POST /delivery-logs` — Criar log (apenas `sale`)
## 🔒 Autenticação & Autorização
- Utilize o token JWT retornado no login no header `Authorization: Bearer ` para acessar rotas protegidas.
- Controle de acesso por role implementado nos middlewares.
## 📄 Licença
Este projeto está sob licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.
---
> Feito com ♥ by Rocketseat :wave: [Participe da nossa comunidade!](https://discord.gg/rocketseat)