Pitch: Eu criei um Next.js ultra-leve em PHP
Brincadeira. Só que não.
Eu não tenho nada contra frameworks grandes. Eles têm seu lugar. Mas pra 90% dos meus projetos — APIs simples, MVPs leves, protótipos que se calhar vão pro lixo... O simples acto de iniciar um novo projeto já me dava calafrios.
composer create-project laravel/laravel meu-projeto
# 15 segundos depois...
# 50MB de dependências
# 200 arquivos que eu nunca vou tocar
# E o servidor ainda nem subiu
Eu só queria algo que:
- Iniciasse rápido (sem esperar 2 minutos pro
composer install) - Fosse transparente (sem magia negra que eu não entendo)
- Tivesse rotas intuitivas (como o Next.js, que eu amo no front-end)
Tentei um e outro micro-framework, todos bons, mas todos tinham uma curva. E todos ainda exigiam que eu escrevesse arquivos de rota separados, definisse grupos, configurasse middlewares — mais código.
Eu queria algo mais simples.
E aí, eu pensei: "Vou fazer o meu próprio."
Nasceu o Fluxor
E ele faz uma coisa só: transforma pastas em rotas.
app/router/
├── users/
│ ├── index.php # GET /users
│ └── [id].php # GET /users/123
É isso. Sem segredo. Sem mágica.
E o melhor: tudo em menos de 10 linhas.
// app/router/users/[id].php
// GET /users/123
Flow::GET()->do(function($req) {
$userId = $req->param('id');
$user = User::find($userId);
return Response::json([
'user' => $user
]);
});
// POST /users/123
Flow::POST()->do(function($req) {
$userId = $req->param('id');
$data = $req->only(['name', 'email']);
$updated = User::update($userId, $data);
return Response::json([
'updated' => $updated,
'message' => 'Perfil atualizado com sucesso'
]);
});
Não é só isso. Ele vem com um pack de utilidades:
Request
$req->input('nome')— captura dados de POST, GET ou JSON$req->param('id')— pega parâmetros da URL (/users/123)$req->all()— todos os dados da requisição- Etc...
Response
Response::json($data)— retorna JSON com headers automáticosResponse::html('<h1>Olá</h1>')— resposta HTML diretaResponse::view('home', $data)— renderiza view com dadosResponse::redirect('/login')— redireciona para outra rotaResponse::success($data, 'Mensagem')- Etc..
View
View::extend('layouts/main')— usa um layout baseView::section('content')— define uma seção de conteúdoView::yield('content')— exibe o conteúdo da seçãoView::e($texto)— escapa HTML automaticamenteView::include('partials/header')— inclui outra view- Etc...
Helpers, Uploader, Mailer
- Helpers globais:
env(),base_path(),dd(),abort() - Uploader seguro:
Uploader::upload($_FILES['avatar'])hash do arquivo, sem duplicatas - Mailer:
(new Mailer())->send(...))envia e-mail com templates
Simplicidade proposital. Sem dependências. Só o que você usa.
Mas e o resto?
Você escolhe. Literalmente.
composer create-project lizzyman04/fluxor-php meu-app
O instalador pergunta: "Quer autenticação?" "Quer envio de e-mail?" "Quer upload de arquivos?"
O que você disser "não", ele remove. O projeto final só tem o que você realmente usa.
Zero bloat. Zero bagagem.
Números que importam
- Boot time: menos de 10ms
- Dependências: absolutamente 0 (só o puro PHP)
- Arquivos iniciais: dá pra contar nos dedos
- Tempo pra criar uma API: 5 minutos
Para quem é isso?
- Quem faz não quer sobrecarga
- Quem quer entender MVC por dentro
- Puristas de desempenho que odeiam boat
- Quem gosta de roteamento estilo Next.js
Início rápido
composer create-project lizzyman04/fluxor-php meu-app
cd meu-app
composer dev
Documentação: https://lizzyman04.github.io/fluxor-php
Sim, o nome "Fluxor". Combina com o framework? Talvez não. Mas me fez feliz.
E no fim, fazer código que te faz feliz é o que importa.
Crie aplicações PHP elegantes com prazer! 🎉