PHP 8.2+Bootstrap 5Multi-DB

MVC PHP Boilerplate

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.

95
Arquivos
8
Tabelas SQL
12+
Regras de Validação
3
Bancos Suportados
Features

Tudo que você precisa para começar

Um boilerplate completo com as melhores práticas de segurança, arquitetura limpa e componentes prontos para produção.

Segurança OWASP

Proteção contra SQL Injection, XSS, CSRF, brute force e mais. Headers de segurança, rate limiting e auditoria completa.

Autenticação & RBAC

Login, registro, reset de senha, roles e permissões granulares. Controle de acesso baseado em papéis com middleware.

Multi-Database

Suporte nativo para MySQL, PostgreSQL e SQL Server. ConnectionFactory com PDO e prepared statements.

Arquitetura MVC

Separação clara entre Core, Domain, Application e Infrastructure. Router, Container DI, Validator e FormBuilder.

Notificações

Sistema de notificações in-app com contagem de não lidas, marcar como lida e listagem completa.

Painel Admin

Dashboard Bootstrap 5 com sidebar responsiva, breadcrumbs, CRUD completo e formulários com validação.

E-mail SMTP

Integração com PHPMailer para envio de e-mails. Templates HTML para reset de senha e notificações.

Testes & Qualidade

PHPUnit para testes unitários e de feature. PHPStan para análise estática. Estrutura pronta para CI/CD.

Contratos para Extensão

Interfaces preparadas para Messaging, Webhooks, Jobs/Filas e Eventos. Extensível sem modificar o core.

Arquitetura

Estrutura do Projeto

Organização limpa seguindo princípios de Clean Architecture com separação clara de responsabilidades.

Diagrama de Arquitetura MVC

Árvore de Arquivos

Core

Router, Request, Response, Session, View, CSRF, Auth, RBAC, Validator, Container, FormBuilder

Http

Controllers (Auth + Admin), Middlewares (Auth, CSRF, Permission, Guest)

Application

Services (Auth, Notification, Audit), Events, Contracts (Mailer, Queue, Jobs)

Infrastructure

Database (ConnectionFactory, BaseRepository), Repositories, Mail (SMTP), Logger (Monolog)

Instalação

Pronto em minutos

Siga os passos abaixo para configurar o projeto no seu ambiente local.

1

Extrair o projeto

bash
cd /var/www
unzip mvc-php.zip
cd mvc-php
2

Instalar dependências

bash
composer install
3

Configurar o .env

bash
cp .env.example .env

# Gerar APP_KEY:
php -r "echo bin2hex(random_bytes(32)) . PHP_EOL;"
.env
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]
4

Criar o banco de dados

sql
CREATE DATABASE mvc_boilerplate CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
5

Executar o schema SQL

bash
mysql -u root -p mvc_boilerplate < database/sql/mysql/schema.sql
6

Permissões e servidor

bash
chmod -R 775 storage/
php -S localhost:8080 -t public

Acesse: http://localhost:8080

Credenciais do Admin Padrão

Senha:Admin@123

Configuração do Servidor Web

Escolha seu servidor:

apache
<VirtualHost *:80>
    ServerName seudominio.com
    DocumentRoot /var/www/mvc-php/public
    <Directory /var/www/mvc-php/public>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
Rotas

Rotas & Endpoints

Todas as rotas definidas no arquivo routes/web.php, organizadas por contexto.

Autenticação (públicas)

MétodoRota
GET/login
POST/login
GET/register
POST/register
GET/forgot-password
POST/forgot-password
GET/reset-password
POST/reset-password
POST/logout

Admin (autenticadas)

MétodoRota
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
Segurança

Segurança OWASP Top 10

Checklist completo de segurança implementado em todo o projeto.

Security Shield
SQL Injection

PDO com prepared statements em todo o projeto

XSS

Escape com htmlspecialchars() via helper e() em todas as views

CSRF

Token por sessão com rotação; validado em POST/PUT/DELETE via middleware

Sessão Segura

HttpOnly, SameSite=Lax, Secure (HTTPS), regeneração no login, timeout

Headers de Segurança

CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, HSTS

Rate Limiting

Proteção contra brute force no login (configurável)

Password Hashing

password_hash() com PASSWORD_DEFAULT; rehash automático

Reset de Senha

Token forte (random_bytes), hash SHA-256 no banco, expiração, uso único

Validação Server-side

Validator completo com regras claras

Anti-enumeração

Resposta genérica no 'esqueci minha senha'

Auditoria

Log de ações críticas (login, CRUD, mudanças de role/permissão)

Erros

Mensagens genéricas em produção, sem stacktrace

Configuração Segura para Produção

.env (produção)
APP_ENV=production
APP_DEBUG=false
SESSION_SECURE=true

Rotação de APP_KEY: Gere uma nova chave com php -r "echo bin2hex(random_bytes(32));", atualize o .env e invalide sessões existentes.

CRUD

Módulo CRUD de Exemplo

O módulo de Clientes demonstra o padrão completo para criar novos módulos.

Padrão Implementado

Entity

app/Domain/Entities/Client.php

Repository

app/Infrastructure/Repositories/ClientRepository.php

Controller

app/Http/Controllers/Admin/ClientController.php

Views

resources/views/admin/clients/ (index.php, form.php)

Rotas

routes/web.php

Funcionalidades incluídas:

  • Listagem com paginação, busca e ordenação por coluna
  • Criação com validação e CSRF
  • Edição com validação e CSRF
  • Exclusão com confirmação e CSRF
  • Auditoria de todas as operações
  • Formulário usando FormBuilder (padrão reutilizável)

Para Criar um Novo Módulo

1Crie a tabela no SQL
2Crie a Entity em app/Domain/Entities/
3Crie o Repository em app/Infrastructure/Repositories/
4Crie o Controller em app/Http/Controllers/Admin/
5Crie as Views em resources/views/admin/{modulo}/
6Registre as rotas em routes/web.php
7Adicione o link no sidebar em resources/views/layouts/admin.php
8Crie as permissões correspondentes

Testes

Executar testes
# Rodar todos os testes
composer test

# Ou diretamente
./vendor/bin/phpunit

# Análise estática (opcional)
./vendor/bin/phpstan analyse app --level=6
Integrações

Integrações Futuras

O projeto já possui contratos (interfaces) preparados para extensão.

E-mail

MailerInterface — implementação SMTP incluída via PHPMailer

Mensageria

MessagingInterface — pronto para RabbitMQ, Redis, etc.

Webhooks

WebhookInterface — envio de webhooks para sistemas externos

Jobs / Filas

JobInterface + QueueInterface — processamento assíncrono

Eventos

EventDispatcher — pub/sub simples para desacoplamento

Logger

PSR-3 via Monolog — logging estruturado e flexível

Requisitos

Requisitos do Sistema

Versões mínimas e extensões PHP necessárias para rodar o projeto.

Versões Mínimas

PHP>= 8.2
Composer>= 2.x
MySQL8.0+
PostgreSQL14+
SQL Server2019+

Extensões PHP

pdo + driver do banco
openssl
mbstring
json
session