Skip to content

Alxarafe Microframework – Referencia Técnica

Alxarafe es un microframework PHP 8.2+ diseñado para el desarrollo rápido de aplicaciones web modulares y APIs RESTful. Proporciona una capa delgada y con opinión sobre componentes estándar de la industria (Illuminate ORM, Blade, Symfony Translation) siguiendo estrictamente la filosofía de Convención sobre Configuración.

Principios de Diseño

PrincipioDescripción
Convención sobre ConfiguraciónControladores, modelos, migraciones y plantillas se descubren automáticamente escaneando namespaces PSR-4. No hay archivos de rutas que mantener.
Modular por DefectoCada funcionalidad se empaqueta como un Módulo (Modules\), cada uno con sus propios Controllers, Models, Migrations, Seeders y Templates.
Reutilizar, No ReinventarCapa de datos = Illuminate/Eloquent. Plantillas = Blade. Traducciones = Symfony/Translation. Autenticación = JWT (Firebase PHP-JWT).
Metadatos vía AtributosLos Atributos PHP 8 (#[Menu], #[ApiRoute], #[RequireRole], #[ModuleInfo]) definen declarativamente rutas, permisos y metadatos de módulos.
Arquitectura de ComponentesLos formularios UI se ensamblan programáticamente a partir de componentes Field, Container y Filter — no HTML codificado a mano.

Requisitos del Sistema

  • PHP ≥ 8.2
  • Composer
  • Extensiones requeridas: ext-pdo, ext-json, ext-openssl
  • Base de datos: MySQL 5.7+ / MariaDB 10.3+ o PostgreSQL 12+

Inicio Rápido

Nuevo Proyecto (Recomendado)

bash
composer create-project alxarafe/alxarafe-template mi-app
cd mi-app
cp .env.example .env
# Editar .env con las credenciales de base de datos
php bin/run_migrations.sh

Agregar a un Proyecto Existente

bash
composer require alxarafe/alxarafe

Luego crear la estructura de directorios esperada (ver Arquitectura).

Desarrollo con Docker

bash
cp .env.example .env
./bin/docker_start.sh
./bin/run_migrations.sh
# Acceder en http://localhost:8081

Estructura del Proyecto

text
mi-proyecto/
├── config/
│   └── config.json          # Configuración global (BD, seguridad, idioma)
├── public/                  # Document Root del servidor web
│   ├── index.php            # Punto de entrada → Dispatcher::run()
│   └── .htaccess            # Reglas de reescritura URL
├── Modules/                 # Módulos de aplicación (namespace Modules\)
│   └── MiModulo/
│       ├── Controller/      # *Controller.php → Rutas web
│       ├── Model/           # Modelos Eloquent
│       ├── Api/             # *Controller.php → Rutas API
│       ├── Migrations/      # Migraciones de base de datos
│       ├── Seeders/         # Seeders de datos
│       └── Templates/       # Vistas Blade
├── templates/               # Plantillas Blade compartidas y layouts
├── themes/                  # Sobrescrituras de temas
└── vendor/                  # Dependencias (incluye alxarafe/alxarafe)
    └── alxarafe/alxarafe/
        └── src/
            ├── Core/        # Kernel del framework (namespace Alxarafe\)
            └── Modules/     # Módulos core (namespace Modules\)

Índice de Documentación

Fundamentos

DocumentoDescripción
Arquitectura y Estructura de DirectoriosNamespaces PSR-4, responsabilidad de directorios, grafo de dependencias
Ciclo de Vida de una PeticiónFlujo completo desde index.php hasta la respuesta HTTP

Referencia de API

DocumentoDescripción
Atributos#[ApiRoute], #[Menu], #[ModuleInfo], #[RequireModule], #[RequirePermission], #[RequireRole]
ControladoresJerarquía GenericControllerViewControllerControllerResourceController
Modelos y TraitsModel, DtoTrait, HasAuditLog
Config y Base de DatosConfig, Database, Seeder, Template, BladeContainer
Campos de Componentes15 tipos de campos para generación de formularios
Contenedores de ComponentesPanel, Tab, TabGroup, Row, Separator, HtmlContent
Filtros de ComponentesTextFilter, SelectFilter, DateRangeFilter, etc.
Workflow de ComponentesStatusWorkflow, StatusTransition
Capa LibAuth, Functions, Messages, Router, Routes, Trans
Capa de ServiciosHookService, EmailService, PdfService, servicios API, Markdown
Capa de HerramientasDispatcher, Debug, ModuleManager, DependencyResolver

Guías

DocumentoDescripción
Referencia del Módulo AdminMódulo Admin integrado: auth, usuarios, roles, permisos, config, migraciones
Uso AvanzadoCrear módulos, hooks, campos personalizados, temas, JWT, i18n
Motor de PlantillasIntegración Blade y descubrimiento de plantillas
Esquema de PlantillasEstructura de vistas basada en componentes
Pestañas ExtensiblesSistema de pestañas condicionales y dinámicas
Arquitectura de TemasPipeline de assets y sobrescrituras de temas
Sistema de TemasInstalación y personalización de temas
Gestor de MenúsSistema de menús basado en atributos
Ciclo de Vida del ResourceControllerCiclo CRUD en detalle
Desarrollo de APIsAPIs REST con autenticación JWT
Guía de TestingConfiguración de PHPUnit, PHPStan, Psalm
DockerEntorno de desarrollo Docker
Guía de PublicaciónVersionado y publicación en Packagist
Guía de ContribuciónCómo contribuir al proyecto

Licencia

Alxarafe se distribuye bajo la GNU General Public License v3.0+ (GPL-3.0-or-later).