Bem-vindo à Delivery API, uma solução robusta para gerenciar entregas, usuários e seus respectivos logs. Esta API foi projetada com foco em escalabilidade, segurança e facilidade de integração, utilizando tecnologias modernas como Node.js, TypeScript e PostgreSQL. Ela oferece endpoints para criar e gerenciar usuários, autenticar sessões, registrar entregas e monitorar seus logs, garantindo uma experiência eficiente para o gerenciamento de serviços de entrega.
- 🟢 Node.js: Ambiente de execução JavaScript para backend.
- 🟦 TypeScript: Superset do JavaScript que adiciona tipagem estática.
- 🐘 PostgreSQL: Banco de dados relacional.
- 🐳 Docker: Containerização para ambientes consistentes.
- ⚡ Express: Framework minimalista para criação de APIs.
- 🛢️ Prisma: ORM moderno para interação com bancos de dados.
- 💎 Zod: Validação de schemas de dados.
- 🔐 JWT (JSON Web Token): Autenticação e controle de acesso.
- 🧪 Jest: Framework de testes para JavaScript.
- ➕ Criar Usuário: Permite registrar novos usuários.
- 🛠️ Criar Sessão: Autentica usuários e gera tokens de acesso.
- ➕ Criar Entrega: Permite cadastrar uma nova entrega.
- 📋 Mostrar Entregas: Lista todas as entregas registradas.
- 🔄 Atualizar Status da Entrega: Modifica o status de uma entrega existente.
- ➕ Criar Log: Adiciona um novo log associado a uma entrega.
- 📋 Mostrar Logs: Lista os logs de uma entrega específica.
Antes de começar, você precisará ter os seguintes itens instalados na sua máquina:
- 🟢 Node.js: Clique aqui para instalar o Node.js
- 🐳 Docker: Clique aqui para instalar o Docker
- 📦 Docker Compose: Clique aqui para instalar o Docker Compose
- Clone o repositório:
git clone https://github.com/joschonarth/delivery-api.git
- Acesse o diretório do projeto:
cd delivery-api
- Instale as dependências:
npm install
- Configure as variáveis de ambiente no arquivo
.env
na raiz do projeto:
DATABASE_URL="postgresql://<username>:<password>@localhost:5432/delivery-api?schema=public"
JWT_SECRET=<your_secret_key>
5. Suba o ambiente Docker:
docker-compose up -d
6. Execute as migrações do banco de dados:
npx prisma migrate dev
7. Inicie a aplicação:
npm run dev
A Delivery API está disponível online e pode ser testada diretamente na produção. Caso queira testar a aplicação, você pode interagir com os endpoints utilizando a URL abaixo.
👉 Você pode testar a Delivery API ao acessar a URL de produção: https://delivery-api-s8bp.onrender.com
Para testar, utilize ferramentas como Postman ou Insomnia para fazer requisições para os endpoints descritos na seção de Endpoints.
- ➕ POST
/users
: Criar um novo usuário.- Body:
{ "name": "joschonarth", "email": "joschonarth@gmail.com", "password": "123456" }
- Body:
- 🔑 POST
/sessions
: Criar uma nova sessão (autenticação).- Body:
{ "email": "joschonarth@gmail.com", "password": "123456" }
- Response:
{ "token": "jwt-token" }
- Body:
-
➕ POST
/deliveries
: Criar uma nova entrega.- Body:
{ "user_id": "1162ebb5-cc24-4681-a317-94dbe4853c84", "description": "Monitor 4K" }
- Body:
-
📋 GET
/deliveries
: Listar todas as entregas. -
🔄 PATCH
/deliveries/:id
: Atualizar o status de uma entrega.- Body:
{ "status": "shipped" }
- Body:
- ➕ POST
/delivery-logs
: Criar um novo log para uma entrega.- Body:
{ "delivery_id": "2e2acfe1-4814-4c55-bf8d-c257c7223739", "description": "Arrived at Distribution Center" }
- Body:
- 📋 GET
/delivery-logs/:delivery_id
: Listar os logs de uma entrega específica.
Este projeto utiliza o Jest para garantir a confiabilidade e o funcionamento correto dos recursos implementados. Para executar os testes, utilize o seguinte comando:
npm run test:dev
- 🟢 Node.js: Documentação oficial do Node.js
- 🟦 TypeScript: Documentação oficial do TypeScript
- 🐘 PostgreSQL: Documentação oficial do PostgreSQL
- 🐳 Docker: Documentação oficial do Docker
- 📦 Docker Compose: Documentação oficial do Docker Compose
- ⚡ Express: Documentação oficial do Express
- 🛢️ Prisma: Documentação oficial do Prisma
- 💎 Zod: Documentação oficial do Zod
- 🔐 JWT: Documentação oficial do JSON Web Token
- 🧪 Jest: Documentação oficial do Jest
Contribuições são bem-vindas! Sinta-se à vontade para abrir um issue ou enviar um pull request.