Framework PHP para desenvolvimento rápido e descomplicado
SpeedPHP é um framework PHP MVC leve, com baixa curva de aprendizado, pensado para quem quer sair do zero ao funcionando sem a complexidade de frameworks maiores. Vem com bibliotecas prontas para as necessidades mais comuns do dia a dia: autenticação JWT, envio de e-mail, geração de PDF, integração com Pix e Mercado Pago, OpenAI, e muito mais.
- URL: https://speedphp.bmorais.com
- Login:
000.000.000-00 - Senha:
123@@123
- PHP >= 8.3
- Extensões PHP:
pdo,json,curl,gd,openssl,exif,fileinfo,intl - Composer
- Docker (recomendado para ambiente de desenvolvimento)
-
Clone o repositório:
git clone https://github.com/brunobmorais/speedphp.git cd speedphp -
Copie o arquivo de configuração de desenvolvimento:
cp config/developerConfig.example.php config/developerConfig.php
-
Edite o arquivo
config/developerConfig.phpcom as informações do seu banco de dados e ambiente. -
Instale as dependências:
composer install
-
Suba os containers Docker:
docker-compose up -d # ou make up -
Acesse no navegador:
- Aplicação: http://speedphp.localhost
- phpMyAdmin: http://phpmyadmin.localhost:8080
php -S localhost:8080 -t ./publicAcesse em http://localhost:8080.
https://seudominio.com/{controller}/{metodo}/{param1}/{param2}
Todo o tráfego passa pelo public/index.php. O framework faz autoload dos controllers em src/Controllers/ e chama o método correspondente à URL. O método padrão (quando não especificado) é index().
Exemplo:
https://seusite.com/home→HomeController::index()https://seusite.com/usuario/perfil/42→UsuarioController::perfil(42)
https://seudominio.com/api/{rota}
As rotas da API são definidas em src/Api/Routers/.
<?php
namespace App\Modules\Home;
use App\Core\Controller\ControllerCore;
class HomeController extends ControllerCore
{
public function index(): void
{
$this->view('home/index', ['titulo' => 'SpeedPHP']);
}
public function detalhe(int $id): void
{
$this->view('home/detalhe', ['id' => $id]);
}
}<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>{{ titulo }}</title>
</head>
<body>
<h1>{{ titulo }}</h1>
</body>
</html>As views ficam em templates/ e usam a engine Twig 3.
speedphp/
├── config/
│ ├── config.php # Configurações globais da aplicação
│ ├── developerConfig.php # Configurações do ambiente local (não versionado)
│ └── developerConfig.example.php # Modelo para configuração local
├── docker/ # Configurações e scripts Docker
├── public/
│ ├── index.php # Entry point da aplicação
│ └── assets/
│ ├── css/style.css # CSS personalizado
│ ├── js/ # JavaScript do projeto
│ ├── img/ # Imagens estáticas
│ ├── plugin/ # Plugins de terceiros
│ └── upload/ # Arquivos enviados pelos usuários
├── src/
│ ├── Api/
│ │ ├── Controllers/ # Controllers da API REST
│ │ ├── Lib/ # Libs exclusivas da API
│ │ └── Routers/ # Definição das rotas da API
│ ├── Controllers/ # Controllers da aplicação web (MVC)
│ ├── Core/
│ │ ├── AppCore.php # Roteador principal (parse da URL)
│ │ └── Controller/
│ │ └── ControllerCore.php # Classe base dos controllers
│ ├── Daos/ # Camada de acesso ao banco de dados
│ ├── Enums/ # Enumerações PHP
│ ├── Libs/ # Bibliotecas utilitárias (ver seção abaixo)
│ ├── Models/ # Entidades que representam tabelas do banco
│ └── Modules/ # Módulos da aplicação (controllers agrupados)
├── templates/ # Views Twig
├── docker-compose.yml
├── Makefile # Comandos de automação do projeto
├── manifest.json # Configuração do PWA
└── sw.js # Service Worker para PWA
| Diretório | Responsabilidade |
|---|---|
src/Controllers/ |
Recebe requisições, orquestra resposta, chama DAOs e views |
src/Models/ |
Entidades com getters/setters que mapeiam tabelas do banco |
src/Daos/ |
Toda a lógica de interação com o banco de dados |
src/Libs/ |
Bibliotecas prontas para uso (JWT, Email, PDF, etc.) |
src/Api/ |
Rotas e controllers da API REST |
src/Core/ |
Núcleo do framework: roteamento e classe base dos controllers |
src/Modules/ |
Controllers organizados por módulo/domínio |
templates/ |
Views Twig da aplicação |
config/ |
Configurações de ambiente e da aplicação |
Todas as bibliotecas ficam em src/Libs/ e podem ser usadas diretamente nos controllers.
| Biblioteca | Descrição |
|---|---|
JwtLib |
Geração e validação de tokens JWT (firebase/php-jwt) |
EmailLib |
Envio de e-mails via PHPMailer |
TemplateEmailLib |
Templates HTML para e-mails |
SessionLib |
Gerenciamento de sessões PHP |
CookieLib |
Manipulação de cookies |
FileLib |
Upload, validação e manipulação de arquivos |
DownloadLib |
Download forçado de arquivos |
Tcpdf/ |
Geração de documentos PDF (tecnickcom/tcpdf) |
PlanilhaLib |
Exportação para Excel via PhpSpreadsheet |
PixLib |
Geração de QR Code e integração com Pix |
MercadoPagoLib |
Integração com a API do Mercado Pago |
OpenAiApi |
Integração com a API da OpenAI |
HttpLib |
Requisições HTTP com cURL |
LogLib |
Logging de eventos da aplicação |
CacheLib |
Cache de dados em arquivo |
AlertLib |
Sistema de alertas e flash messages |
CryptTextLib |
Criptografia e descriptografia de texto |
TimeLib |
Manipulação e formatação de datas e horários |
TableLib |
Renderização dinâmica de tabelas HTML |
ICalLib |
Geração de arquivos de calendário iCal |
LoginLimit |
Limitador de tentativas de login (brute-force protection) |
NotificacaoLib |
Notificações internas da aplicação |
PushNotification/ |
Push notifications para PWA |
StravaLib |
Integração com a API do Strava |
UuidClass |
Geração de UUIDs (ramsey/uuid) |
LocalStorageClass |
Interação com localStorage do navegador |
Form/ |
Helpers para criação e validação de formulários |
FuncoesLib |
Funções utilitárias gerais |
Execute make help para ver todos os comandos disponíveis.
| Comando | Descrição |
|---|---|
make up |
Para todos os containers e sobe com --force-recreate |
make docker |
Menu interativo para gerenciar containers Docker |
make start |
Menu interativo completo: Docker, config, composer, backup, uploads |
make update |
Executa composer update dentro do container PHP |
make push MSG="mensagem" |
Commit + pull --rebase + push para o repositório |
make createmodel |
Cria Model e Dao a partir do nome de uma tabela do banco |
make createcontroller |
Cria Controller e template dentro de src/Modules |
make build |
Minifica JS e CSS do projeto |
make backup |
Executa backup/import do banco de dados de produção |
make download |
Baixa arquivos de uploads do servidor remoto |
# Criar controller e template
http://localhost/config/createcontroller/NOME_CONTROLLER/NOME_SERVICO
# Criar model e dao
http://localhost/config/createmodel/NOME_TABELA_BANCO
# Build (minificação de JS e CSS)
http://localhost/config/build
composer dump-autoload --optimizeRenomeie o arquivo de exemplo e edite com as informações do seu servidor:
cp config/developerConfig.example.php config/developerConfig.php| Campo | Valor |
|---|---|
| URL | http://phpmyadmin.localhost:8080/ |
| Usuário | user |
| Senha | user |
| Root | root / root |
- Em Settings → PHP → Servers, adicione o servidor com a URL do projeto
- Marque Use path mappings
- Configure o Absolute path on the server como
/var/www/html
O SpeedPHP tem suporte nativo a PWA:
manifest.json— configuração do app (nome, ícones, cores)sw.js— Service Worker para funcionamento offline
O framework utiliza Bootstrap 5.3 como base de CSS.
Para gerar um favicon: https://www.favicon-generator.org/
| Pacote | Descrição | Link |
|---|---|---|
robmorgan/phinx |
Migrations e Seeds para banco de dados | phinx.org |
bmorais/database |
Conexão PDO ao banco de dados | GitHub |
phpmailer/phpmailer |
Envio de e-mails | GitHub |
firebase/php-jwt |
Geração e validação de tokens JWT | GitHub |
twig/twig |
Engine de templates | twig.symfony.com |
tecnickcom/tcpdf |
Geração de PDFs | tcpdf.org |
phpoffice/phpspreadsheet |
Leitura e escrita de planilhas Excel | GitHub |
ramsey/uuid |
Geração de UUIDs | GitHub |
mpdf/qrcode |
Geração de QR Codes | Packagist |
spatie/ignition |
Debug e tratamento de erros (dev) | GitHub |
- Bruno Morais — github.com/brunobmorais
- Athus Felipe — github.com/AthusFelipe
Este projeto está licenciado sob a MIT License.
