Bem-vindo ao Fastapp Chatbot Manager, uma API RESTful desenvolvida com FastAPI para gerenciar chatbots de maneira eficiente e escalável. Este projeto adota uma arquitetura monolítica modular, com separação clara de responsabilidades entre modelos, serviços, repositórios e rotas, garantindo manutenibilidade e facilidade de extensão.
O Fastapp Chatbot Manager permite criar, gerenciar e interagir com chatbots por meio de uma API robusta. Ele utiliza FastAPI para alta performance, SQLAlchemy com suporte a operações assíncronas para acesso ao banco de dados, Alembic para gerenciar migrações e Pydantic para validação de dados. A aplicação é conteinerizável com Docker e inclui testes unitários e de integração.
A estrutura do projeto segue o padrão de arquitetura limpa, com os seguintes diretórios e arquivos principais:
app/
├── main.py # Inicializa a aplicação FastAPI, inclui routers e configura eventos de startup/shutdown
├── core/
│ ├── config.py # Configurações do ambiente usando Pydantic Settings
│ ├── logger.py # Configuração centralizada de logging
│ └── exceptions.py # Exceções personalizadas e handlers de erro
├── db/
│ ├── base.py # Base declarativa para modelos SQLAlchemy
│ ├── session.py # Configuração de engine e sessões (suporte a async/sync)
│ └── migrations/ # Scripts de migração gerenciados pelo Alembic
├── api/
│ └── v1/
│ ├── routers/
│ │ └── users.py # Rotas da API para gerenciamento de usuários
│ └── deps.py # Dependências injetáveis para as rotas
├── models/
│ └── user.py # Modelos SQLAlchemy para entidades do banco
├── schemas/
│ └── user.py # Esquemas Pydantic para validação de requests/responses
├── repositories/
│ └── user_repo.py # Camada de acesso a dados para operações no banco
├── services/
│ └── user_service.py # Lógica de negócio para operações com usuários
├── tests/
│ ├── unit/ # Testes unitários
│ └── integration/ # Testes de integração
└── utils/
└── pagination.py # Utilitários para paginação de resultados
Outros arquivos:
├── alembic.ini # Configuração do Alembic para migrações
├── CHANGES.md # Changelog do projeto
├── docker-compose.yml # Configuração para orquestração com Docker
├── Dockerfile # Definição do contêiner da aplicação
├── LICENSE # Licença do projeto
├── pyproject.toml # Configuração de dependências com Poetry
├── requirements.txt # Lista de dependências para instalação com pip
├── htmlcov/ # Relatórios de cobertura de testes
├── logs/ # Diretório para logs da aplicação
└── dev.sh # Script auxiliar para desenvolvimento
Para rodar o projeto localmente, você precisará de:
- Python: 3.10 ou superior
- Banco de Dados: PostgreSQL (recomendado) ou outro compatível com SQLAlchemy
- Docker: Opcional, para rodar a aplicação em contêineres
- Poetry: Recomendado para gerenciar dependências
- Git: Para clonar o repositório
-
Clone o repositório:
git clone https://github.com/seu-usuario/fastapp-chatbot-manager.git cd fastapp-chatbot-manager -
Crie um ambiente virtual (opcional se usar Poetry):
python -m venv .venv source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows
-
Instale as dependências: Com Poetry (recomendado):
poetry install
Ou com pip:
pip install -r requirements.txt
-
Configure as variáveis de ambiente: Crie um arquivo
.envna raiz do projeto com o seguinte conteúdo:DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/dbname LOG_LEVEL=INFO SECRET_KEY=sua-chave-secreta-aquiAs variáveis são lidas pelo módulo
app/core/config.pyusando Pydantic Settings. -
Aplique as migrações do banco de dados:
alembic upgrade head
Inicie o servidor de desenvolvimento com Uvicorn:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000Acesse a documentação interativa da API em: http://localhost:8000/docs.
Construa e inicie os contêineres:
docker-compose up --buildOs testes estão localizados em app/tests/ e incluem testes unitários e de integração. Para executá-los:
pytestPara gerar relatórios de cobertura:
pytest --cov=app --cov-report=htmlOs relatórios serão salvos no diretório htmlcov/.
- Gerenciamento de Usuários: Endpoints para criar, listar, atualizar e excluir usuários.
- Alta Performance: Suporte a operações assíncronas com FastAPI e SQLAlchemy.
- Validação Robusta: Esquemas Pydantic para validação de dados de entrada e saída.
- Logging Centralizado: Configuração de logs para monitoramento e depuração.
- Paginação: Suporte a paginação para endpoints que retornam grandes conjuntos de dados.
- Migrações de Banco: Gerenciamento de esquema com Alembic.
Contribuições são bem-vindas! Siga os passos abaixo:
- Faça um fork do repositório.
- Crie uma branch para sua feature:
git checkout -b minha-feature. - Commit suas alterações:
git commit -m 'Adiciona minha feature'. - Envie para o repositório remoto:
git push origin minha-feature. - Abra um Pull Request.
Certifique-se de:
- Seguir as convenções de código do projeto.
- Adicionar testes para novas funcionalidades.
- Atualizar o
CHANGES.mdcom suas alterações.
- Erro de conexão com o banco: Verifique se o
DATABASE_URLestá correto no arquivo.env. - Dependências não encontradas: Certifique-se de que todas as dependências foram instaladas com
poetry installoupip install -r requirements.txt. - Problemas com migrações: Execute
alembic revision --autogeneratepara criar novas migrações, se necessário.
Este projeto está licenciado sob os termos descritos no arquivo LICENSE.
Para perguntas, sugestões ou suporte, entre em contato com [hedrisgts@gmail.com] ou abra uma issue no repositório.