
Base moderna, segura e pronta para produção em PHP 8.2 puro (sem frameworks), com painel admin Bootstrap 5, autenticação completa, RBAC, notificações e suporte multi-banco de dados.
Um boilerplate completo com as melhores práticas de segurança, arquitetura limpa e componentes prontos para produção.
Proteção contra SQL Injection, XSS, CSRF, brute force e mais. Headers de segurança, rate limiting e auditoria completa.
Login, registro, reset de senha, roles e permissões granulares. Controle de acesso baseado em papéis com middleware.
Suporte nativo para MySQL, PostgreSQL e SQL Server. ConnectionFactory com PDO e prepared statements.
Separação clara entre Core, Domain, Application e Infrastructure. Router, Container DI, Validator e FormBuilder.
Sistema de notificações in-app com contagem de não lidas, marcar como lida e listagem completa.
Dashboard Bootstrap 5 com sidebar responsiva, breadcrumbs, CRUD completo e formulários com validação.
Integração com PHPMailer para envio de e-mails. Templates HTML para reset de senha e notificações.
PHPUnit para testes unitários e de feature. PHPStan para análise estática. Estrutura pronta para CI/CD.
Interfaces preparadas para Messaging, Webhooks, Jobs/Filas e Eventos. Extensível sem modificar o core.
Organização limpa seguindo princípios de Clean Architecture com separação clara de responsabilidades.

Router, Request, Response, Session, View, CSRF, Auth, RBAC, Validator, Container, FormBuilder
Controllers (Auth + Admin), Middlewares (Auth, CSRF, Permission, Guest)
Services (Auth, Notification, Audit), Events, Contracts (Mailer, Queue, Jobs)
Database (ConnectionFactory, BaseRepository), Repositories, Mail (SMTP), Logger (Monolog)
Siga os passos abaixo para configurar o projeto no seu ambiente local.
cd /var/www
unzip mvc-php.zip
cd mvc-phpcomposer installcp .env.example .env
# Gerar APP_KEY:
php -r "echo bin2hex(random_bytes(32)) . PHP_EOL;"APP_NAME="Meu Sistema"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8080
APP_KEY=GERE_UMA_CHAVE_ALEATORIA_AQUI
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=mvc_boilerplate
DB_USER=root
DB_PASS=sua_senha
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=587
MAIL_USER=seu_user
MAIL_PASS=sua_senha
[email protected]CREATE DATABASE mvc_boilerplate CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;mysql -u root -p mvc_boilerplate < database/sql/mysql/schema.sqlchmod -R 775 storage/
php -S localhost:8080 -t publicAcesse: http://localhost:8080
[email protected]Admin@123Escolha seu servidor:
<VirtualHost *:80>
ServerName seudominio.com
DocumentRoot /var/www/mvc-php/public
<Directory /var/www/mvc-php/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>Todas as rotas definidas no arquivo routes/web.php, organizadas por contexto.
| Método | Rota |
|---|---|
| GET | /login |
| POST | /login |
| GET | /register |
| POST | /register |
| GET | /forgot-password |
| POST | /forgot-password |
| GET | /reset-password |
| POST | /reset-password |
| POST | /logout |
| Método | Rota |
|---|---|
| GET | /admin/dashboard |
| GET | /admin/clients |
| GET | /admin/clients/create |
| POST | /admin/clients |
| GET | /admin/clients/{id}/edit |
| POST | /admin/clients/{id} |
| POST | /admin/clients/{id}/delete |
| GET | /admin/users |
| GET | /admin/users/create |
| POST | /admin/users |
| GET | /admin/users/{id}/edit |
| POST | /admin/users/{id} |
| POST | /admin/users/{id}/delete |
| GET | /admin/roles |
| POST | /admin/roles |
| GET | /admin/permissions |
| POST | /admin/permissions |
| GET | /admin/notifications |
| POST | /admin/notifications/{id}/read |
| POST | /admin/notifications/read-all |
| GET | /admin/notifications/count |
Checklist completo de segurança implementado em todo o projeto.

PDO com prepared statements em todo o projeto
Escape com htmlspecialchars() via helper e() em todas as views
Token por sessão com rotação; validado em POST/PUT/DELETE via middleware
HttpOnly, SameSite=Lax, Secure (HTTPS), regeneração no login, timeout
CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, HSTS
Proteção contra brute force no login (configurável)
password_hash() com PASSWORD_DEFAULT; rehash automático
Token forte (random_bytes), hash SHA-256 no banco, expiração, uso único
Validator completo com regras claras
Resposta genérica no 'esqueci minha senha'
Log de ações críticas (login, CRUD, mudanças de role/permissão)
Mensagens genéricas em produção, sem stacktrace
APP_ENV=production
APP_DEBUG=false
SESSION_SECURE=trueRotação de APP_KEY: Gere uma nova chave com php -r "echo bin2hex(random_bytes(32));", atualize o .env e invalide sessões existentes.

O módulo de Clientes demonstra o padrão completo para criar novos módulos.
app/Domain/Entities/Client.php
app/Infrastructure/Repositories/ClientRepository.php
app/Http/Controllers/Admin/ClientController.php
resources/views/admin/clients/ (index.php, form.php)
routes/web.php
# Rodar todos os testes
composer test
# Ou diretamente
./vendor/bin/phpunit
# Análise estática (opcional)
./vendor/bin/phpstan analyse app --level=6O projeto já possui contratos (interfaces) preparados para extensão.
MailerInterface — implementação SMTP incluída via PHPMailer
MessagingInterface — pronto para RabbitMQ, Redis, etc.
WebhookInterface — envio de webhooks para sistemas externos
JobInterface + QueueInterface — processamento assíncrono
EventDispatcher — pub/sub simples para desacoplamento
PSR-3 via Monolog — logging estruturado e flexível
Versões mínimas e extensões PHP necessárias para rodar o projeto.
>= 8.2>= 2.x8.0+14+2019+pdo + driver do bancoopensslmbstringjsonsession