bachisoft/thunder-pack
Composer 安装命令:
composer require bachisoft/thunder-pack
包简介
Laravel multi-tenant SaaS package with subscription management, flexible limits system, and WhatsApp integration
关键字:
README 文档
README
Paquete completo de Laravel para construir aplicaciones SaaS multi-tenant con gestión de suscripciones, sistema flexible de límites, integración con WhatsApp, y panel de Super Admin.
🚀 Características
Multi-Tenancy
- Tenancy basado en sesión: Sin bases de datos separadas por tenant
- Trait BelongsToTenant: Aislamiento automático de datos por tenant
- Selector de tenant: Interfaz para cambiar entre tenants
- Bypass de super admin: Los administradores pueden acceder a todos los tenants
Sistema de Suscripciones
- Gestión completa del ciclo de vida de suscripciones
- Activación manual y renovación
- Seguimiento de eventos de pago
- Notificaciones por email y WhatsApp
- Alertas de expiración (7 días antes)
- Estados: activa, prueba, vencida, cancelada
Sistema Flexible de Límites
- Límites numéricos:
max_clients,max_projects,api_calls_per_month - Feature flags booleanos:
custom_branding,api_access - Habilitación de módulos:
whatsapp,reports,analytics - Rate limiting: Por día, por mes
- Overrides personalizados: Para clientes VIP
- Tracking de uso: Historial completo de consumo
Directivas Blade
@hasFeature('custom_branding') <!-- Mostrar contenido personalizado --> @endhasFeature @canUseResource('max_clients', 5) <!-- Permitir crear 5 clientes más --> @endcanUseResource @hasAnyFeature(['api_access', 'webhooks']) <!-- Tiene al menos una característica --> @endhasAnyFeature
Integración con WhatsApp
- API Evolution integrada
- Múltiples teléfonos por tenant
- Notificaciones automáticas
- Sistema de colas con reintentos (3 intentos: 1m, 3m, 10m)
- Registro de mensajes y estadísticas
- Comando de prueba incluido
Panel de Super Admin
- Dashboard con métricas clave
- Gestión completa de tenants (crear, editar, ver, límites personalizados)
- Gestión completa de usuarios (crear, editar, asignar tenants, cambiar roles)
- Gestión de suscripciones con renovación rápida
- Gestión de planes con límites configurables
- Configuración de WhatsApp por tenant
- Historial de uso y eventos
- Interfaz de tablas compactas y minimalistas
Gestión de Equipos
- Invitaciones por email
- Control de acceso basado en roles
- Límites de staff por plan
- Notificaciones automáticas
📋 Requisitos
- PHP 8.2 o superior
- Laravel 12.0 o superior
- Livewire 3.6.4 o superior
📦 Instalación
1. Instalar vía Composer
composer require bachisoft/thunder-pack
2. Ejecutar el comando de instalación
php artisan thunder-pack:install
Este comando:
- Publica las migraciones
- Publica la configuración
- Publica las vistas (opcional)
- Ejecuta las migraciones
- Seed los planes por defecto
- Crea el primer super admin
3. Configurar el modelo User
Agrega el trait HasTenants a tu modelo User:
use ThunderPack\Traits\HasTenants; class User extends Authenticatable { use HasTenants; // ... resto del modelo }
4. Registrar middleware (Laravel 12)
El paquete registra automáticamente los middleware con aliases:
tenant- Validación de acceso al tenantsubscription- Verificación de suscripción activasuperadmin- Restricción a super adminstenant.permission- Control de permisos dentro del tenant
Aplícalos en tus rutas:
Route::middleware(['auth', 'tenant', 'subscription'])->group(function () { Route::get('/dashboard', [DashboardController::class, 'index']); }); Route::middleware(['auth', 'superadmin'])->prefix('sa')->group(function () { Route::get('/dashboard', [SuperAdminController::class, 'index']); });
5. Configurar WhatsApp (Opcional)
Agrega las credenciales en tu .env:
WHATSAPP_EVOLUTION_ENABLED=true WHATSAPP_EVOLUTION_API_URL=https://api.evolutionapi.com WHATSAPP_EVOLUTION_API_KEY=tu_api_key_aqui WHATSAPP_EVOLUTION_DEFAULT_INSTANCE=default
🔧 Configuración
Publica el archivo de configuración:
php artisan vendor:publish --tag=thunder-pack-config
El archivo config/thunder-pack.php permite personalizar:
return [ 'table_prefix' => '', // Prefijo para tablas 'models' => [ 'tenant' => \ThunderPack\Models\Tenant::class, 'plan' => \ThunderPack\Models\Plan::class, // Sobrescribe modelos según necesites ], 'routes' => [ 'enabled' => true, 'prefix' => '', 'middleware' => ['web', 'auth'], 'super_admin_prefix' => 'sa', ], 'features' => [ 'whatsapp' => true, 'team_invitations' => true, 'super_admin_panel' => true, ], 'cache' => [ 'ttl' => [ 'limits' => 300, // 5 minutos 'features' => 600, // 10 minutos ], ], ];
📖 Uso
Verificar características
use ThunderPack\Facades\FeatureGate; // Verificar si el tenant tiene una característica if (FeatureGate::has('api_access')) { // Permitir acceso a la API } // Verificar límite numérico if (FeatureGate::can('max_clients', 10)) { // Puede crear 10 clientes más } // Obtener valor de límite $maxProjects = FeatureGate::get('max_projects', 5); // 5 es el valor por defecto
Registrar uso de recursos
use ThunderPack\Facades\PlanLimitService; // Registrar uso de recurso PlanLimitService::recordUsage('api_calls', 1); // Obtener uso actual $usage = PlanLimitService::getCurrentUsage('api_calls', 'month');
Gestionar suscripciones
use ThunderPack\Facades\SubscriptionService; // Activar suscripción manualmente SubscriptionService::activateManual($tenant, $plan, $days = 30); // Verificar estado if (SubscriptionService::isSubscriptionActive($tenant)) { // Suscripción activa } // Obtener días restantes $daysLeft = SubscriptionService::getDaysUntilExpiration($tenant);
Enviar notificaciones WhatsApp
use ThunderPack\Services\WhatsAppService; use ThunderPack\Jobs\SendWhatsAppNotificationJob; // Enviar vía Job (recomendado) SendWhatsAppNotificationJob::dispatch( $tenant, 'subscription_activated', ['plan_name' => 'Pro'] ); // O directamente $whatsapp = app(WhatsAppService::class); $whatsapp->sendNotification($tenant, 'payment_received', ['amount' => 500]);
🎨 Vistas Personalizables
Publica las vistas para personalizarlas:
php artisan vendor:publish --tag=thunder-pack-views
Las vistas se copiarán a resources/views/vendor/thunder-pack/
🧪 Testing
composer test
📚 Documentación Adicional
🔄 Actualización
composer update bachisoft/thunder-pack php artisan migrate php artisan view:clear
🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir cambios mayores.
📄 Licencia
MIT License. Ver LICENSE para más detalles.
🙏 Créditos
Desarrollado por Bachisoft
🐛 Soporte
Para reportar bugs o solicitar características, por favor usa GitHub Issues.
统计信息
- 总下载量: 833
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-12