65 lines
2.5 KiB
Markdown
Executable File
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.
|