Referência v3
Voltar à plataforma

Arquitetura do Sistema

Entenda como as peças se encaixam.

Visão geral

A Vupi.us API é organizada em duas camadas principais:

api_vupi.us_php/ ├── src/ │ ├── Kernel/ # Núcleo do sistema — não modifique │ │ ├── Nucleo/ # Container, Router, Application, ModuleLoader, PluginManager │ │ ├── Middlewares/ # Auth, RateLimit, Security, BotBlocker, CircuitBreaker... │ │ ├── Contracts/ # Interfaces (contratos do kernel) │ │ ├── Http/ # Request, Response, RequestFactory │ │ ├── Support/ # JWT, AuditLogger, ThreatScorer, IdempotencyLock, Storage... │ │ ├── Database/ # PdoFactory, migrations do core, ModuleConnectionResolver │ │ ├── Controllers/ # Dashboard, Home, Capabilities, EnvController... │ │ ├── Configs/ # EnvConfig │ │ ├── Exceptions/ # Handler global, ApplicationException, RouteException │ │ ├── Routes/ # Rotas do kernel (se houver) │ │ ├── Utils/ # Sanitizer, ImageProcessor, RelogioTimeZone │ │ ├── Views/ # Templates PHP do dashboard e páginas HTML │ │ ├── Nonce.php # Geração de nonce CSP por request │ │ └── View.php # Renderizador de views PHP │ ├── Modules/ # Sua aplicação vive aqui │ │ ├── Auth/ # Autenticação JWT (nativo) │ │ └── Usuario/ # Gerenciamento de usuários (nativo) │ ├── CLI/ # Comandos da CLI (vupi.us) │ │ ├── CommandRunner.php # Dispatcher de comandos │ │ ├── SetupCommand.php # php vupi setup │ │ ├── MigrateCommand.php # php vupi migrate │ │ ├── MakeModuleCommand.php # php vupi make:module │ │ ├── MakePluginCommand.php # php vupi make:plugin │ │ └── Plugin*Command.php # install, validate, inspect, migrate... │ └── storage/ # Storage interno do src (usado por módulos) ├── public/ # Arquivos estáticos servidos diretamente │ ├── assets/ # CSS, JS, imagens do dashboard │ └── 404.html # Página de erro 404 ├── storage/ # Estado em tempo de execução │ ├── circuit/ # Estado do CircuitBreaker por serviço │ ├── ratelimit/ # Contadores de rate limit (file storage) │ ├── threat/ # ThreatScorer por IP │ ├── backups/ # Backups de banco gerados pelo setup │ ├── modules_state.json # Estado ativo/inativo dos módulos │ ├── capabilities_registry.json # Providers de capacidades registrados │ └── plugins_registry.json # Plugins instalados ├── tests/ # Testes automatizados │ ├── Unit/ # Testes unitários (PHPUnit) │ ├── Feature/ # Testes de feature │ ├── SecurityTest.php # OWASP API Top 10 │ ├── FuzzTest.php # Fuzzing de endpoints │ ├── LoadAttackTest.php # Carga + ataque combinado │ └── PerformanceTest.php # Testes de performance ├── ci/ # Integração contínua │ ├── github-actions.yml # Pipeline GitHub Actions │ ├── gitlab-ci.yml # Pipeline GitLab CI │ └── fail2ban/ # Configurações Fail2Ban para produção ├── docker/ # Configurações Docker │ └── mysql/conf.d/ # Configuração customizada do MySQL ├── scripts/ # Scripts de instalação e configuração │ ├── install-ubuntu.sh # Instalação completa no Ubuntu │ └── nginx/ # Configs de exemplo para Nginx ├── Documentacao/ # Esta documentação (HTML) ├── index.php # Entry point — bootstrap da aplicação ├── vupi.us # CLI principal: php vupi <comando> ├── db # Runner de banco: php db migrate|seed|rollback ├── docker-compose.yml # PostgreSQL + MySQL + Adminer ├── Caddyfile # Proxy reverso com TLS automático (produção) ├── Caddyfile.dev # Proxy reverso local (desenvolvimento) ├── Makefile # Atalhos: make caddy-start, make test... ├── install.sh # Instalação rápida Ubuntu (um comando) ├── composer.json # Dependências PHP └── EXEMPLO.env # Template de configuração

Fluxo de uma requisição

1

index.php — Entry point

Toda requisição chega aqui. O arquivo carrega o .env, monta o Container de DI, registra os bindings e inicializa a Application.

2

Application::run()

Executa o pipeline de segurança global: HttpsEnforcerBotBlockerSecurityHeaders → dispatch da rota.

3

Router::dispatch()

Encontra a rota correspondente e executa os middlewares em cadeia (onion model). Cada middleware pode bloquear ou passar adiante.

4

Controller → Service → Repository

O Controller recebe a Request, delega ao Service (regras de negócio), que usa o Repository (acesso ao banco). Retorna um Response.

5

Response::Enviar()

A resposta percorre o pipeline de volta, headers de segurança são injetados, e o JSON é enviado ao cliente.

Módulos nativos

O sistema vem com dois módulos pré-instalados em src/Modules/:

MóduloResponsabilidade
AuthLogin, logout, refresh token, recuperação de senha, verificação de e-mail.
UsuarioRegistro, perfil, gerenciamento de usuários (admin), upload de avatar.