Skip to content

Latest commit

 

History

History
203 lines (148 loc) · 6.16 KB

README.md

File metadata and controls

203 lines (148 loc) · 6.16 KB

🚚 Delivery API

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.


🛠️ Tecnologias Utilizadas

  • 🟢 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.

⚙️ Funcionalidades

👤 Usuários

  • ➕ Criar Usuário: Permite registrar novos usuários.

🔑 Sessions

  • 🛠️ Criar Sessão: Autentica usuários e gera tokens de acesso.

📦 Entregas

  • ➕ 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.

📜 Logs de Entregas

  • ➕ Criar Log: Adiciona um novo log associado a uma entrega.
  • 📋 Mostrar Logs: Lista os logs de uma entrega específica.

✅ Pré-requisitos

Antes de começar, você precisará ter os seguintes itens instalados na sua máquina:


🚀 Como Executar o Projeto

  1. Clone o repositório:
git clone https://github.com/joschonarth/delivery-api.git
  1. Acesse o diretório do projeto:
cd delivery-api
  1. Instale as dependências:
npm install
  1. 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

🌐 Deploy

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.


🔗 Endpoints

👤 Usuários (/users)

  • POST /users: Criar um novo usuário.
    • Body:
      {
        "name": "joschonarth",
        "email": "joschonarth@gmail.com",
        "password": "123456"
      }

🔑 Sessions (/sessions)

  • 🔑 POST /sessions: Criar uma nova sessão (autenticação).
    • Body:
      {
        "email": "joschonarth@gmail.com",
        "password": "123456"
      }
    • Response:
      {
        "token": "jwt-token"
      }

📦 Entregas (/deliveries)

  • POST /deliveries: Criar uma nova entrega.

    • Body:
      {
        "user_id": "1162ebb5-cc24-4681-a317-94dbe4853c84",
        "description": "Monitor 4K"
      }
  • 📋 GET /deliveries : Listar todas as entregas.

  • 🔄 PATCH /deliveries/:id: Atualizar o status de uma entrega.

    • Body:
      {
        "status": "shipped"
      }

📜 Logs de Entregas (/delivery-logs)

  • POST /delivery-logs: Criar um novo log para uma entrega.
    • Body:
      {
        "delivery_id": "2e2acfe1-4814-4c55-bf8d-c257c7223739",
        "description": "Arrived at Distribution Center"
      }
  • 📋 GET /delivery-logs/:delivery_id: Listar os logs de uma entrega específica.

✅ Testes

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

📚 Documentações e Links Úteis


🤝 Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir um issue ou enviar um pull request.

📞 Contato