Introducción
Doggy Framework es un framework de desarrollo low-code empresarial nativo en IA, construido sobre Symfony 7.4 LTS (soporte a largo plazo hasta 2029).
¿Por qué Doggy?
- Nativo en IA: integración profunda de MCP, Agentes y múltiples modelos (Alibaba Bailian, OpenAI, LM Studio, Ollama, etc.), con sistema de configuración de LLM integrado, asistente IA global, mejora de vistas IA, asistente de codificación, consulta en lenguaje natural, reconocimiento visual y otras capacidades de IA
- Motor low-code: define los modelos de negocio mediante Attributes de PHP 8 combinados con la anotación personalizada
@Ef, y genera automáticamente las migraciones de base de datos y la interfaz de administración - Diseñador de vistas impulsado por IA: diseño por arrastrar y soltar + operaciones en lenguaje natural mediante IA + sub-agentes de reconocimiento de intenciones que generan vistas + gestión de múltiples versiones
- Seguridad empresarial: inicio de sesión sin contraseña con WebAuthn, modelo de tres funcionarios, políticas de contraseña, registro de auditoría de extremo a extremo
- Comunicación en tiempo real: envío en tiempo real basado en Mercure SSE, con Hub integrado en FrankenPHP, sin necesidad de servicios adicionales
- Alto rendimiento: modo Worker de FrankenPHP + compresión zstd/br, arquitectura priorizando PostgreSQL
- Ecosistema completo: estructura organizativa, tareas programadas, almacenamiento de archivos, sistema de correo, librería de componentes SunUI y más, listos para usar
Pila tecnológica
| Capa | Tecnología |
|---|---|
| Lenguaje | PHP 8.2+ |
| Framework | Symfony 7.4 LTS |
| Runtime | FrankenPHP (modo Worker) vía runtime/frankenphp-symfony |
| Base de datos | PostgreSQL 14+ |
| ORM | Doctrine ORM + StofDoctrineExtensionsBundle (Gedmo) |
| Cola de mensajes | Symfony Messenger (Doctrine Transport) |
| Comunicación en tiempo real | Mercure SSE (dunglas/mercure) |
| IA | Symfony AI (MCP, Agent, Store, soporte de múltiples plataformas) |
| Autenticación | WebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt) |
| Almacenamiento de archivos | League Flysystem (Local / OSS / S3) |
| Frontend | Twig + jQuery + librería de componentes SunUI |
| Librerías de utilidades | PHPSpreadsheet, Imagine, Predis, Ramsey UUID |
Requisitos del sistema
- PHP >= 8.2
- ext-ctype, ext-iconv
- PostgreSQL >= 14
- Composer >= 2.5
Inicio rápido
Instalación
bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-appConfiguración del entorno
bash
cp .env.example .env
# Edite .env para configurar la conexión a la base de datos y la clave JWT de MercureIniciar la base de datos
PostgreSQL debe instalarse y ejecutarse por separado:
bash
# macOS
brew install postgresql@14
brew services start postgresql@14
createdb app
# Ubuntu/Debian
sudo apt install postgresql-14
sudo systemctl start postgresql
sudo -u postgres createdb appEl Mercure Hub está integrado en FrankenPHP, no es necesario iniciarlo por separado.
Acceso
- Aplicación: http://localhost:8000
- Panel de administración: http://localhost:8000/admin
Estructura de directorios
config/
├── bundles.php # Lista de Symfony Bundles habilitados
├── packages/ # Configuración de cada Bundle
└── services.yaml
src/
├── Annotation/ # Anotaciones personalizadas: Ef.php, EfGroup.php
├── Command/ # 16 comandos de consola
├── Controller/ # Controladores Admin, Api, Security
├── Entity/ # Entidades Doctrine + CommonTrait
│ ├── Organization/ # Department, Position, etc.
│ ├── Platform/ # Entidades de la plataforma
│ ├── Security/ # User, Role, Permission
│ ├── Storage/ # Entidades de almacenamiento de archivos
│ └── System/ # Entidades de configuración del sistema
├── Form/ # Tipos de formulario
├── Message/ # Mensajes asíncronos
├── MessageHandler/ # Procesadores de mensajes
├── Repository/ # Doctrine Repository
├── Security/ # WebAuthn, JWT, Voter
├── Service/ # AI, Calendar, Security, Storage, Task, View, etc.
└── Twig/ # TwigExtension
Caddyfile # Configuración de FrankenPHP (incluye Mercure Hub, compresión, caché)Bundles principales habilitados
| Bundle | Función |
|---|---|
| FrameworkBundle | Núcleo de Symfony |
| DoctrineBundle + MigrationsBundle | ORM de base de datos y migraciones |
| SecurityBundle | Autenticación y autorización de seguridad |
| TwigBundle + TwigExtraBundle | Motor de plantillas |
| MonologBundle | Registro (logging) |
| StofDoctrineExtensionsBundle | Extensiones Gedmo (árbol, marcas de tiempo, borrado suave, etc.) |
| NelmioCorsBundle | Soporte CORS |
| WebauthnBundle | Autenticación sin contraseña WebAuthn |
| MercureBundle | Envío de mensajes en tiempo real |
| AiBundle | Integración de IA de Symfony |
| FlysystemBundle | Abstracción de almacenamiento de archivos |
| HautelookAliceBundle | Fixtures de datos de prueba |
Conceptos fundamentales
Modelo dinámico
Defina los modelos marcando los campos de negocio con la anotación @Ef combinada con los Attributes de PHP 8; se completan automáticamente:
- Generación de migraciones de base de datos
- Renderizado de la interfaz CRUD
- Reglas de validación de datos
- Comprobaciones de permisos
php
use App\Annotation\Ef;
class Department
{
#[Ef(displayName: 'Nombre del departamento', required: true)]
private string $name;
#[Ef(displayName: 'Código del departamento', searchable: true)]
private string $code;
}Referencia: Modelo dinámico
Trait común de entidades
Todas las entidades combinan las siguientes capacidades mediante CommonTrait:
CommonTrait
├── BlameableTrait # Registro automático de creador/editor
├── TimestampableTrait # Registro automático de fecha de creación/modificación
├── SoftDeleteTrait # Borrado suave
└── IdTrait # Clave primaria autoincrementalEstructura organizativa
Árbol de departamentos multinivel (Nested Set), gestión de empleados y sistema de puestos, con soporte para:
- Árbol de departamentos de profundidad ilimitada (Gedmo NestedTree)
- Pertenencia a múltiples empresas y departamentos
- Sistema de puestos y niveles
- Importación/exportación masiva de usuarios (PHPSpreadsheet)
Referencia: Estructura organizativa
Sistema de seguridad
- Inicio de sesión sin contraseña con WebAuthn (compatible con Passkey, llaves de seguridad, biometría)
- Modelo de tres funcionarios (administrador del sistema, administrador de seguridad, administrador de auditoría)
- Políticas de complejidad y validez de contraseñas
- Auditoría de operaciones de extremo a extremo
Referencia: Autenticación WebAuthn