Skip to content

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

CapaTecnología
LenguajePHP 8.2+
FrameworkSymfony 7.4 LTS
RuntimeFrankenPHP (modo Worker) vía runtime/frankenphp-symfony
Base de datosPostgreSQL 14+
ORMDoctrine ORM + StofDoctrineExtensionsBundle (Gedmo)
Cola de mensajesSymfony Messenger (Doctrine Transport)
Comunicación en tiempo realMercure SSE (dunglas/mercure)
IASymfony AI (MCP, Agent, Store, soporte de múltiples plataformas)
AutenticaciónWebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt)
Almacenamiento de archivosLeague Flysystem (Local / OSS / S3)
FrontendTwig + jQuery + librería de componentes SunUI
Librerías de utilidadesPHPSpreadsheet, 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-app

Configuració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 Mercure

Iniciar 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 app

El Mercure Hub está integrado en FrankenPHP, no es necesario iniciarlo por separado.

Acceso

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

BundleFunción
FrameworkBundleNúcleo de Symfony
DoctrineBundle + MigrationsBundleORM de base de datos y migraciones
SecurityBundleAutenticación y autorización de seguridad
TwigBundle + TwigExtraBundleMotor de plantillas
MonologBundleRegistro (logging)
StofDoctrineExtensionsBundleExtensiones Gedmo (árbol, marcas de tiempo, borrado suave, etc.)
NelmioCorsBundleSoporte CORS
WebauthnBundleAutenticación sin contraseña WebAuthn
MercureBundleEnvío de mensajes en tiempo real
AiBundleIntegración de IA de Symfony
FlysystemBundleAbstracción de almacenamiento de archivos
HautelookAliceBundleFixtures 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 autoincremental

Estructura 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

Recursos

Código abierto bajo MIT | Copyright © 2026 Doggy