Saltar al contenido
info Resumen

Qué incluye este proyecto

Una base de código preparada para estudiar, extender y adaptar. Pensada para ahorrar configuración inicial y trabajar sobre un ejemplo funcional.

code Código limpio

Estructura clara y organizada para entender el proyecto sin fricción.

check_circle Listo para usar

Base funcional para empezar a personalizar sin partir desde cero.

extension Fácil de extender

Pensado para añadir funcionalidades y convertirlo en producto real.

videocam Vídeo

Explicación del proyecto

Vídeo de introducción Proyecto final
timer Duración: 9 minutos subtitles Explicación paso a paso
list_alt Contenido

Detalle del proyecto

Este proyecto incluye una aplicación web completa utilizando Laravel 12 y Filament 3, implementando una arquitectura multi-tenant. La solución permite crear y gestionar múltiples sitios (tenants) desde un panel de administración central, donde cada tenant tiene su propia base de datos, subdominio y panel de administración independiente.

Cursos recomendados para entender este proyecto

Formas de utilizar este proyecto

  • Como estudio: Si te interesa aprender a desarrollar aplicaciones multi-tenant con Laravel y Filament, aquí tienes un ejemplo completo para ver cómo implementar esta arquitectura.

  • Como punto de partida: Si quieres desarrollar tu propia plataforma multi-tenant, este proyecto te ofrece una base sólida desde la cual partir. Si necesitas servicios personalizados, puedes contactar a través del formulario de contacto.

Funcionalidades del Panel de Administración Central

  • Gestión de Tenants: Crea, edita y elimina tenants desde el panel de administración central.

  • Asignación de Dominios: Configura subdominios personalizados para cada tenant.

  • Gestión de Bases de Datos: Cada tenant tiene su propia base de datos que se crea y elimina automáticamente.

  • Directorio de Sitios: Visualiza todos los tenants en un directorio con enlaces directos a cada uno.

Funcionalidades de los Tenants

  • Panel de Administración Independiente: Cada tenant tiene su propio panel Filament para gestionar sus recursos.

  • Gestión de Usuarios: Administra los usuarios específicos de cada tenant.

  • Gestión de Productos: Administra productos u otros recursos específicos del tenant.

  • Autenticación con Breeze: Sistema de autenticación completo para los usuarios finales (registro, inicio de sesión, recuperación de contraseñas).

Características Técnicas

  • Aislamiento de Datos: Cada tenant tiene su propia base de datos, garantizando el aislamiento completo de la información.

  • Gestión de Subdominios: Acceso a cada tenant a través de subdominios personalizados.

  • Eliminación en Cascada: Al eliminar un tenant, se elimina automáticamente su base de datos y todos sus recursos asociados.

  • Manejo de Errores: Redirección a error 404 cuando se intenta acceder a un tenant inexistente.

  • Directorio Central: Página principal que muestra todos los tenants disponibles con enlaces directos.

Dependencias utilizadas

  • Filament 3

  • Tenancy For Laravel

  • Laravel Breeze

  • Livewire y Volt

  • Tailwind CSS

  • PHP 8.4

Archivo .env

Crea el archivo .env a partir del archivo .env.example y ajusta tus variables de entorno.

Recuerda que el host de la conexión con MySQL es el servicio de docker-compose, así que las credenciales de base de datos deberían ser algo similar a lo siguiente:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password

En entornos de producción, ajusta la siguiente variable del .env para definir qué dominios utilizados en los correos electrónicos podrán acceder al panel admin:

[email protected]

Cambia yourdomain.com por el dominio que deba tener acceso al panel.

Lanzar proyecto con Sail

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php84-composer:latest \
    composer install --ignore-platform-reqs

sail build
sail up -d
sail artisan key:generate
sail artisan migrate:fresh --seed
sail npm install && sail npm run dev

Estructura del proyecto

El proyecto sigue una arquitectura multi-tenant basada en subdominios. La aplicación principal (central) se ejecuta en el dominio raíz, mientras que cada tenant se ejecuta en un subdominio específico.

Aplicación Central

  • Ruta principal (/): Directorio de tenants con enlaces a cada sitio.

  • Panel de administración (/admin): Gestión completa de tenants, dominios y otros recursos globales.

Aplicación de Tenant

  • Ruta del tenant ({tenant}.localhost): Página principal del tenant.

  • Panel de administración del tenant ({tenant}.localhost/panel): Panel Filament para la gestión de recursos específicos del tenant.

  • Autenticación ({tenant}.localhost/login, /register, etc.): Sistema de autenticación completo para los usuarios del tenant.

Flujo de trabajo

  1. El administrador central crea un nuevo tenant desde el panel de administración.

  2. El sistema crea automáticamente una nueva base de datos para el tenant.

  3. El tenant es accesible a través de su subdominio personalizado.

  4. Los administradores del tenant pueden gestionar sus propios recursos desde su panel de administración.

  5. Los usuarios finales pueden registrarse y acceder a los recursos del tenant.

Eliminación de tenants

Cuando un administrador central elimina un tenant:

  1. El sistema elimina automáticamente la base de datos del tenant.

  2. El subdominio queda liberado y ya no es accesible.

  3. Todos los recursos asociados al tenant son eliminados.

¡Gracias por tu interés en nuestro proyecto! 😊