O ExpressBR é uma API RESTful de alta performance desenvolvida para gerenciar entregadores parceiros e ordens de serviço de logística urbana. O projeto foi estruturado utilizando boas práticas de desenvolvimento backend, segurança com tokens stateless e testes automatizados.
Este projeto foi construído focado em resolver problemas reais do ecossistema de logtechs e e-commerces no mercado brasileiro.
- Linguagem: Python 3.13
- Framework: FastAPI (Assíncrono e de alta performance)
- Banco de Dados: PostgreSQL (Rodando em container isolado via Docker)
- ORM: SQLAlchemy 2.0 (Mapeamento Relacional e tratamento de transações)
- Segurança: JWT (JSON Web Tokens) com hashing de senhas via
bcrypt - Validação de Dados: Pydantic V2 (Garantia de integridade das entradas)
- Testes Automatizados: Pytest (Testes de unidade e de integração)
- Gerenciador de Dependências: Poetry
- Regras de Negócio Brasileiras (Custom Validators):
- Validador customizado de CNPJ impedindo registros inválidos no banco de dados.
- Validador inteligente de CEP aceitando formatos com ou sem hífen (
XXXXX-XXX).
- Segurança e Autenticação Robusta:
- As senhas dos entregadores são salvas no banco apenas na forma de criptografia irreversível (Hash).
- Criação de dependência injetada (
Depends) de segurança para proteção de rotas privadas usando JWT.
- Cálculo Dinâmico de Frete:
- Lógica automática de precificação de corridas com base no peso do pacote (R$ 10,00 fixo + R$ 2,50/kg).
- Banco de Dados Relacional (1-to-Many):
- Tabelas de entregadores e pedidos atreladas de forma íntegra via Chave Estrangeira (ForeignKey).
Você precisará ter instalado na sua máquina: Python 3.12+, Poetry e Docker Desktop.
-
Clone o repositório:
git clone https://github.com/seu-usuario/expressbr.git cd expressbr -
Instale as dependências com o Poetry:
poetry install
-
Suba o banco de dados PostgreSQL via Docker Compose:
docker compose up -d
-
Inicie a aplicação:
poetry run uvicorn main:app --reload
-
Acesse a documentação interativa: Abra
http://127.0.0.1:8000/docsno seu navegador para interagir e testar as rotas através do Swagger.
O projeto conta com cobertura de testes de unidade (para validações de formato) e testes de integração (para regras de negócio). Para rodá-los:
poetry run pytest -v