API REST para gerenciamento de leads (cadastro, listagem e recuperação), desenvolvida utilizando boas práticas com Python, FastAPI e MongoDB.
Esta opção sobe tanto a API quanto o banco de dados MongoDB automaticamente.
- Certifique-se de ter o Docker e Docker Compose instalados.
- Na raiz do projeto, execute:
docker compose up --build
- A API estará disponível em:
http://localhost:8000 - Acesse a documentação (Swagger UI) em:
http://localhost:8000/docs
Pré-requisitos: Python 3.12+ e MongoDB rodando localmente na porta 27017, para intruções de como instalar e rodar o MongoDB, acesse: (https://www.mongodb.com/try/download/community-edition).
-
Crie e ative um ambiente virtual:
python -m venv .venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows
-
Instale as dependências:
pip install -r requirements.txt
-
Execute a aplicação:
python main.py # Ou via uvicorn diretamente: # uvicorn src.main:app --reload
O projeto possui uma cobertura de testes garantindo a integridade das funcionalidades principais.
Para executar os testes unitários automatizados:
pytestPara executar testes manuais, utilize o Swagger UI acessível em http://localhost:8000/docs.
O projeto segue uma Arquitetura em Camadas para garantir desacoplamento e facilidade de manutenção:
src/
├── config/ # Configurações globais (env vars, DB connection)
├── integrations/ # Clientes para serviços externos
├── models/ # Modelos de dados e schemas Pydantic
├── repositories/ # Camada de acesso a dados (MongoDB)
├── routers/ # Controllers/Endpoints da API
├── services/ # Regras de negócio
└── main.py # Entrypoint da aplicação FastAPI
A interação entre as camadas segue o padrão Controller-Service-Repository, adotando a técnica de injeção de dependencias (DI), garantindo uma separação clara de responsabilidades e facilitando a manutenção e testes. Em caso de falha da API externa (DummyJSON), o lead é cadastrado sem a data de nascimento.