🚀 Framework PHP BootZen
Framework PHP modular inspirado en Laravel/Django con arquitectura limpia y multi-tenancy.
📋 Contexto
Los frameworks existentes pueden ser pesados. BootZen busca ser ligero, modular y explícito.
🎯 Objetivo
Crear framework PHP con:
- Core mínimo extensible
- Router PSR-7 compatible
- Sistema de componentes
- Caché Redis
- Multi-tenancy por columna
📦 Alcance
Incluye:
- Estructura de paquetes Composer
- Docker setup
- Router básico
- Sistema de componentes
- Caché con Redis
🏛️ Arquitectura
Estructura de Paquetes
bootzen/
├── packages/
│ ├── core/ # Kernel y DI Container
│ ├── router/ # Sistema de rutas PSR-7
│ ├── view/ # Motor de plantillas
│ ├── cache/ # Redis wrapper
│ ├── auth/ # Autenticación
│ ├── db/ # Database layer
│ └── ui-components/ # Componentes UI
├── app/
├── docker/
└── tests/
Paquetes Core
| Paquete | Responsabilidad | Interfaz |
|---|---|---|
| core | Kernel, DI Container | Application::run() |
| router | Routing PSR-7 | Router::get(), ::post() |
| view | Componentes PHP | Component::render() |
| cache | Redis | Cache::get(), ::set() |
⚙️ Docker Setup
# docker-compose.yml
version: "3.8"
services:
php:
build: ./docker/php
volumes:
- .:/var/www/html
ports:
- "8000:8000"
redis:
image: redis:7-alpine
ports:
- "6379:6379"
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: bootzen
ports:
- "3306:3306"
🧩 Sistema de Componentes
// packages/view/src/Component.php
abstract class Component {
protected array $props = [];
protected array $slots = [];
protected ?string $cacheKey = null;
protected int $cacheTtl = 3600;
public function render(): string {
if ($this->cacheKey && $cached = $this->getFromCache()) {
return $cached;
}
$output = $this->template();
if ($this->cacheKey) {
$this->saveToCache($output);
}
return $output;
}
abstract protected function template(): string;
}
📋 Roadmap
Fase 0: Preparación (Semana 1)
- Configurar repositorio PSR-4
- Docker Compose (PHP 8.2, Redis, MySQL)
- Composer autoload
- Variables de entorno
- Logging con Monolog
Fase 1: Core Mínimo (Semana 2-3)
- Router con middleware
- Request/Response wrappers
- Controller base
- Sistema de componentes PHP
- Autenticación básica
- Database layer
Fase 2: Multitenancy y Caché (Semana 4)
- Resolver tenant desde subdominio
- Scope automático por tenant
- Redis sessions
- Fragment cache por componente
Fase 3: Packaging (Semana 5)
- Extraer UI components
- Extraer DB wrapper
- Documentar APIs internas
- Versionado semántico
✅ Checklist Fase 0
- Estructura PSR-4 configurada
- Docker levanta correctamente
- Composer autoload funciona
- .env cargado
- Logs escriben a archivo