Files
dockerfluxodecaixapro/rules/02_ARQUITETURA.md
T
2026-09-01 10:46:29 -03:00

65 lines
2.5 KiB
Markdown
Executable File

# Arquitetura do Sistema
O SysCMS é um CMS modular desenvolvido em PHP 8.1+ seguindo a arquitetura MVC.
## Estrutura de Diretórios
```
app/ # Aplicação principal
├── Console/ # Comandos de console
├── Controllers/ # Controladores da aplicação
├── Interfaces/ # Interfaces e contratos
├── Middlewares/ # Middlewares da aplicação
├── Models/ # Modelos de dados
├── Repositories/ # Padrão Repository
└── Services/ # Lógica de negócio
bin/
└── console.php # Console de comandos
bootstrap/
└── app.php # Inicialização da aplicação
kernel/ # Núcleo do sistema
├── Application.php # Classe principal (Orquestrador)
├── ModuleLoader.php # Carregador de módulos
├── View.php # Sistema de renderização Twig
└── [outros componentes]
modules/ # Módulos do sistema (ver 03_MODULOS.md)
public/ # Web Root
├── index.php # Ponto de entrada
├── assets/ # CSS, JS, Imagens
└── .htaccess # Configuração Apache
├── storage/ # Armazenamento (Uploads, Cache, Logs)
├── themes/ # Temas do sistema (Customizer, Overrides)
├── templates/ # Templates globais (Layouts, Componentes)
tests/ # Testes unitários
```
## Componentes Principais
### 1. Kernel (`kernel/`)
- **Application.php**: Coração do sistema. Gerencia rotas, requisições e respostas.
- **ModuleLoader.php**: Responsável por descobrir, carregar e inicializar módulos.
- **View.php**: Wrapper para o Twig, injetando globais e funções úteis.
### 2. Autoloading (PSR-4)
O projeto utiliza o Composer para autoloading:
- `App\` -> `app/`
- `Kernel\` -> `kernel/`
- `Modules\` -> `modules/`
- `Tests\` -> `tests/`
### 3. Padrões de Design Obrigatórios
- **MVC**: Model-View-Controller para separação de responsabilidades.
- **Repository**: Para abstração de acesso a dados.
- **Factory**: Para criação de objetos complexos.
- **Strategy**: Para algoritmos intercambiáveis.
- **Observer**: Para eventos e notificações.
- **SOLID**: Aplicar princípios SOLID em todo o desenvolvimento.
## Dashboard Único
O sistema possui um único dashboard (`/dashboard`). A personalização é feita via Sidebar dinâmica, baseada nas permissões do usuário logado.