3.3 KiB
3.3 KiB
🧩 Projeto [SAAS]
Este projeto é uma API monolítica modular, onde cada módulo representa um domínio específico da aplicação. Internamente, cada módulo é construído sobre a Arquitetura Hexagonal, promovendo separação de responsabilidades, testabilidade e independência da infraestrutura.
⚙️ Visão Geral da Arquitetura
🏗️ Estrutura Monolítica Modular
- Modelo monolítico, modularizado por domínios
- Cada domínio organizado dentro do diretório
packages/ - Componentes por domínio:
- Controllers (entrada)
- Endpoints (rotas)
- Schemas (validação e transformação)
- Actions (orquestração de lógica)
- Services (casos de uso)
- Repositories (acesso a dados)
🧭 Arquitetura Hexagonal por Módulo
/<domínio>
/actions # Orquestra lógica entre services, schemas e repositories
/controllers # Interface entre endpoints e actions
/endpoints # Define as rotas da API
/repositories # Acesso ao Firebird via SQLAlchemy
/schemas # Entrada e saída de dados
/services # Casos de uso
🛠️ Tecnologias Utilizadas
- Linguagem: Python 3.11+
- ORM: SQLAlchemy
- Banco de Dados: Firebird
- Driver: fdb
- Arquitetura: Hexagonal por módulo
- Organização: Modular por domínio
🗄️ Banco de Dados
O projeto utiliza Firebird como banco principal.
Arquivo de configuração:
Api/config/database/firebird.json
Exemplo:
{
"host": "localhost",
"port": 3050,
"database": "/caminho/para/database.fdb",
"user": "SYSDBA",
"password": "masterkey"
}
Classe de conexão:
Api/core/connections/firebird.py
🧠 SQLAlchemy com Queries Manuais
Utilizamos SQLAlchemy para:
- Gerenciar conexões
- Preencher parâmetros em queries nativas
Exemplo:
sql = "SELECT * FROM CLIENTES WHERE ID = :id"
params = {"id": 123}
result = session.execute(text(sql), params).fetchall()
🗂️ Estrutura de Diretórios
Api/
├── api/
│ └── v1/
│ ├── packages/
│ │ └── administrative/
│ │ ├── actions/
│ │ ├── controllers/
│ │ ├── endpoints/
│ │ ├── repositories/
│ │ ├── schemas/
│ │ └── services/
│ └── api.py
├── config/
│ └── database/firebird.json
├── core/
│ ├── base/
│ ├── connections/
│ ├── system/
│ ├── utils/
│ └── auth.py
▶️ Executando a API
# Criar ambiente virtual
python -m venv .venv
# Ativar ambiente virtual
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt
# Executar a API
uvicorn api.v1.api:app --reload
📌 Observações
- Novos domínios devem seguir a estrutura modular.
- A arquitetura hexagonal facilita manutenção e futura extração para microsserviços.
- A separação entre actions, services e repositories melhora a organização e testabilidade.
👨💻 Autor
Desenvolvido por Orius Tecnologia
GitHub / LinkedIn: seu-link