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