PHPackages                             bachisoft/thunder-pack - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. bachisoft/thunder-pack

ActiveLibrary[Payment Processing](/categories/payments)

bachisoft/thunder-pack
======================

Laravel multi-tenant SaaS package with subscription management, flexible limits system, and WhatsApp integration

1.6.7(3mo ago)0360↑27.8%MITBladePHP ^8.2CI passing

Since Jan 12Pushed 3mo agoCompare

[ Source](https://github.com/jbachi347/thunder-pack)[ Packagist](https://packagist.org/packages/bachisoft/thunder-pack)[ Docs](https://github.com/bachisoft/thunder-pack)[ RSS](/packages/bachisoft-thunder-pack/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (31)Used By (0)

Thunder Pack
============

[](#thunder-pack)

[![Latest Version](https://camo.githubusercontent.com/c207341888581f141cbfbd0946bf00fbc49ed757cadfe0cc1f33e7387ee4f05e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6261636869736f66742f7468756e6465722d7061636b2e737667)](https://packagist.org/packages/bachisoft/thunder-pack)[![Total Downloads](https://camo.githubusercontent.com/024466eac618c23aa5319bdbd7335ed457ef8d160a04ba66049614650978cf2c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6261636869736f66742f7468756e6465722d7061636b2e737667)](https://packagist.org/packages/bachisoft/thunder-pack)[![License](https://camo.githubusercontent.com/1d13686b52d69ddab800361061a7a1d842bb852458f0a86e16ebb7ef3829caaf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6261636869736f66742f7468756e6465722d7061636b2e737667)](https://packagist.org/packages/bachisoft/thunder-pack)

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

[](#-características)

### Multi-Tenancy

[](#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

[](#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

[](#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

[](#directivas-blade)

```
@hasFeature('custom_branding')

@endhasFeature

@canUseResource('max_clients', 5)

@endcanUseResource

@hasAnyFeature(['api_access', 'webhooks'])

@endhasAnyFeature
```

### Integración con WhatsApp

[](#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

[](#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

[](#gestión-de-equipos)

- Invitaciones por email
- Control de acceso basado en roles
- Límites de staff por plan
- Notificaciones automáticas

📋 Requisitos
------------

[](#-requisitos)

- PHP 8.2 o superior
- Laravel 12.0 o superior
- Livewire 3.6.4 o superior

📦 Instalación
-------------

[](#-instalación)

### 1. Instalar vía Composer

[](#1-instalar-vía-composer)

```
composer require bachisoft/thunder-pack
```

### 2. Ejecutar el comando de instalación

[](#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

[](#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)

[](#4-registrar-middleware-laravel-12)

El paquete registra automáticamente los middleware con aliases:

- `tenant` - Validación de acceso al tenant
- `subscription` - Verificación de suscripción activa
- `superadmin` - Restricción a super admins
- `tenant.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)

[](#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
---------------

[](#-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
-----

[](#-uso)

### Verificar características

[](#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

[](#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

[](#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

[](#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
------------------------

[](#-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
---------

[](#-testing)

```
composer test
```

📚 Documentación Adicional
-------------------------

[](#-documentación-adicional)

- [Sistema de Límites Flexibles](docs/FLEXIBLE_LIMITS_SYSTEM.md)
- [Notificaciones WhatsApp](docs/WHATSAPP_NOTIFICATIONS.md)
- [Guía de Instalación Completa](docs/INSTALLATION.md)
- [Referencia Rápida](docs/QUICK_REFERENCE.md)

🔄 Actualización
---------------

[](#-actualización)

```
composer update bachisoft/thunder-pack
php artisan migrate
php artisan view:clear
```

🤝 Contribuciones
----------------

[](#-contribuciones)

Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir cambios mayores.

📄 Licencia
----------

[](#-licencia)

MIT License. Ver [LICENSE](LICENSE) para más detalles.

🙏 Créditos
----------

[](#-créditos)

Desarrollado por [Bachisoft](https://bachisoft.com)

🐛 Soporte
---------

[](#-soporte)

Para reportar bugs o solicitar características, por favor usa [GitHub Issues](https://github.com/bachisoft/thunder-pack/issues).

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance78

Regular maintenance activity

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

30

Last Release

119d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/716e843aa51247f90976b77253d381b3d8c4021dbd30addcfade125ed9cf288a?d=identicon)[jbachi347](/maintainers/jbachi347)

---

Top Contributors

[![jbachi347](https://avatars.githubusercontent.com/u/62396954?v=4)](https://github.com/jbachi347 "jbachi347 (43 commits)")

---

Tags

laravellivewiresubscriptionwhatsappsaastenantmulti-tenantmulti-tenancylimitsfeature-gates

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/bachisoft-thunder-pack/health.svg)

```
[![Health](https://phpackages.com/badges/bachisoft-thunder-pack/health.svg)](https://phpackages.com/packages/bachisoft-thunder-pack)
```

###  Alternatives

[hyn/multi-tenant

Run multiple websites using the same laravel installation while keeping tenant specific data separated for fully independant multi-domain setups.

2.6k1.1M9](/packages/hyn-multi-tenant)[helori/laravel-saas

Software as a Service scaffholding for Laravel based on Vue 3, Tailwindcss and Stripe. Inspired by Laravel Jetstream and Spark.

121.3k](/packages/helori-laravel-saas)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
