Saltar al contenido principal

🚀 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​

PaqueteResponsabilidadInterfaz
coreKernel, DI ContainerApplication::run()
routerRouting PSR-7Router::get(), ::post()
viewComponentes PHPComponent::render()
cacheRedisCache::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

📚 Referencias​