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: HttpsEnforcer → BotBlocker → SecurityHeaders → 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ódulo | Responsabilidade |
|---|---|
| Auth | Login, logout, refresh token, recuperação de senha, verificação de e-mail. |
| Usuario | Registro, perfil, gerenciamento de usuários (admin), upload de avatar. |