# 🧩 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 ```text / /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:** ```text Api/config/database/firebird.json ``` **Exemplo:** ```json { "host": "localhost", "port": 3050, "database": "/caminho/para/database.fdb", "user": "SYSDBA", "password": "masterkey" } ``` **Classe de conexão:** ```text Api/core/connections/firebird.py ``` --- ## 🧠 SQLAlchemy com Queries Manuais Utilizamos SQLAlchemy para: - Gerenciar conexões - Preencher parâmetros em queries nativas **Exemplo:** ```python sql = "SELECT * FROM CLIENTES WHERE ID = :id" params = {"id": 123} result = session.execute(text(sql), params).fetchall() ``` --- ## 🗂️ Estrutura de Diretórios ```text 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 ```bash # 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](#)