gabogalro / redstonephp
Ultra-lightweight PHP microframework for API microservices. SQL-first. Stored Procedures as first-class citizens.
v2.1.0
2026-08-07 13:19 UTC
Requires
- php: >=8.2
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
Requires (Dev)
- pestphp/pest: ^3.0
- phpstan/phpstan: ^2.0
README
Microframework PHP para APIs de microservicios. SQL-first, sin ORM, con los stored procedures como ciudadanos de primera clase.
RedstonePHP rompe con el paradigma MVC tradicional para introducir PSC (Procedure-Service-Controller): un patrón pensado para equipos que prefieren SQL directo y stored procedures sobre ORMs pesados como Eloquent, sin renunciar a una estructura clara, tipado fuerte y DI.
Controller (ciego) -> Service (orquesta) -> Repository / StoredProcedure (ejecuta)
¿Por qué RedstonePHP?
| Problema | Solución |
|---|---|
| Los frameworks fullstack son pesados para microservicios | Sin views, sin ORM, enfocado solo en APIs |
| Los ORMs ocultan la complejidad SQL y generan queries ineficientes | SQL directo + Query Builder ligero + Stored Procedures |
| Los SPs se crean a mano en cada ambiente | Migraciones de Stored Procedures rastreadas por checksum |
| Desplegar cambios en SPs es manual | php forge migrate:procedures sincroniza automáticamente |
Instalación
composer create-project gabogalro/redstonephp-app mi-api
cd mi-api
cp .env.example .env
php forge key:generate
php forge migrate
php forge serve
Componentes principales
- Core: Container de DI con autowiring por Reflection,
Application,ServiceProvider,Facade(estilo Laravel). - Routing: Router con grupos, parámetros con nombre, pipeline de middlewares "en cebolla".
- Http:
Requestcon soporte unificado para JSON, form-data y multipart (incluye archivos);Responsecon envelope JSON consistente. - Database:
Connection(PDO con prepared statements reales),DBfacade, Query Builder fluido, migraciones de tablas estilo Laravel (Schema/Blueprint). - Procedure:
StoredProcedurecomo clase base yProcedureMigrator, el diferenciador del framework — migraciones.sqlpuras rastreadas por checksum MD5. - Validation: DSL de reglas (
'campo' => 'required|string|max:255') integrado conFormRequest. - Auth — Ingot + Netherite: autenticación JWT propia (HS256/384/512, sin dependencias externas) más un Bearer token opaco respaldado en BD, middleware
Netheritegenerado en la app consumidora. - Cache: driver de BD con TTL, prefijo y limpieza probabilística de expirados.
- Log: logs diarios por nivel (
debug..critical). - Exceptions:
HttpException+Handlercon salida distinta endebugon/off. - CLI
forge: generadores (make:api,make:controller,make:migration,make:procedure,make:sp, ...), migraciones (migrate,migrate:tables,migrate:procedures),ingot:install,serve,key:generate,cache:clear,route:list.
CLI rápido
php forge make:api Employee # Controller + Service + Repository + DTO + Mapper + Requests + Exception php forge make:migration create_employees_table php forge make:procedure register_employee --type=insert php forge migrate # tablas + stored procedures, en orden php forge ingot:install # scaffold completo de auth JWT + Bearer php forge route:list
Desarrollo del framework
composer install composer test # Pest — requiere MySQL local (ver phpunit.xml) composer stan # PHPStan nivel 5
Licencia
MIT © Eduardo Gabriel Galindo Romero