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

2.5 KiB
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.