Skip to content

thiagoaramizo/lead-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lead API

API REST para gerenciamento de leads (cadastro, listagem e recuperação), desenvolvida utilizando boas práticas com Python, FastAPI e MongoDB.

Instruções para execução

Opção 1: Docker (Recomendado)

Esta opção sobe tanto a API quanto o banco de dados MongoDB automaticamente.

  1. Certifique-se de ter o Docker e Docker Compose instalados.
  2. Na raiz do projeto, execute:
    docker compose up --build
  3. A API estará disponível em: http://localhost:8000
  4. Acesse a documentação (Swagger UI) em: http://localhost:8000/docs

Opção 2: Execução Local

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).

  1. Crie e ative um ambiente virtual:

    python -m venv .venv
    source .venv/bin/activate  # Linux/macOS
    # .venv\Scripts\activate   # Windows
  2. Instale as dependências:

    pip install -r requirements.txt
  3. Execute a aplicação:

    python main.py
    # Ou via uvicorn diretamente:
    # uvicorn src.main:app --reload

Testes

O projeto possui uma cobertura de testes garantindo a integridade das funcionalidades principais.

Para executar os testes unitários automatizados:

pytest

Para executar testes manuais, utilize o Swagger UI acessível em http://localhost:8000/docs.

Estrutura do Projeto

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.

About

Api de cadastro e listagem de leads utilizando FastApi e MongoDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published