PHPackages                             sabitahmadumid/laravel-launchpad - 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. [DevOps &amp; Deployment](/categories/devops)
4. /
5. sabitahmadumid/laravel-launchpad

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

sabitahmadumid/laravel-launchpad
================================

Laravel Installation and Update Wizard Package - Ship your Laravel web app easily with automated installation and update wizards

v2.6.0(9mo ago)05[3 PRs](https://github.com/sabitahmadumid/laravel-launchpad/pulls)MITPHPPHP ^8.0CI passing

Since Sep 8Pushed 2mo agoCompare

[ Source](https://github.com/sabitahmadumid/laravel-launchpad)[ Packagist](https://packagist.org/packages/sabitahmadumid/laravel-launchpad)[ Docs](https://github.com/sabitahmadumid/laravel-launchpad)[ GitHub Sponsors](https://github.com/SabitAhmad)[ RSS](/packages/sabitahmadumid-laravel-launchpad/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (10)Versions (16)Used By (0)

🚀 Laravel Launchpad
===================

[](#-laravel-launchpad)

[![Latest Version on Packagist](https://camo.githubusercontent.com/6158b2298bc787b5b5ebbb57b8e793777b801f558b737a78656c9472e1c9c0d4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f736162697461686d6164756d69642f6c61726176656c2d6c61756e63687061642e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/sabitahmadumid/laravel-launchpad)[![Total Downloads](https://camo.githubusercontent.com/b902bc6b34ef4e0e7c4ad5fe3a95b0903031e5d4152cc2ee3abd1104f2619fbd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f736162697461686d6164756d69642f6c61726176656c2d6c61756e63687061642e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/sabitahmadumid/laravel-launchpad)

**Laravel Launchpad** is a comprehensive installation and update wizard package that makes it incredibly easy for developers to ship their Laravel applications and for end-users to install them. With professional UI components, license validation, environment checking, and a streamlined automatic process, Launchpad transforms complex deployments into simple, guided experiences.

Perfect for SaaS applications, commercial Laravel products, or any Laravel application that needs professional installation and update capabilities.

📸 Screenshots
-------------

[](#-screenshots)

### Installation Wizard

[](#installation-wizard)

[![Laravel Launchpad Installation Wizard](https://raw.githubusercontent.com/sabitahmadumid/laravel-launchpad/main/.github/screenshots/install.png)](https://raw.githubusercontent.com/sabitahmadumid/laravel-launchpad/main/.github/screenshots/install.png)

### Update Wizard

[](#update-wizard)

[![Laravel Launchpad Update Wizard](https://raw.githubusercontent.com/sabitahmadumid/laravel-launchpad/main/.github/screenshots/update.png)](https://raw.githubusercontent.com/sabitahmadumid/laravel-launchpad/main/.github/screenshots/update.png)

> **📝 Note**: Screenshots show the default Tailwind CSS styling. All views are fully customizable through Blade templates.

✨ Features
----------

[](#-features)

- **🎯 Automatic Installation Wizard** - 5-step guided installation process with automatic configuration-based setup
- **🔄 Automatic Update Wizard** - 5-step guided update process with automatic version upgrades
- **🌍 Multi-Language Support** - Built-in internationalization system, easily extendable to any language
- **⚠️ Mutually Exclusive Modes** - Installation and update wizards are designed to run independently (never simultaneously)
- **🤖 Configuration-Driven Flow** - No user choices required - all operations automatic based on configuration
- **🔒 Auto-Security** - Installation/update routes automatically disabled after successful completion
- **🛡️ License Validation** - Flexible license verification system with external server support
- **⚙️ Environment Checking** - PHP version, extensions, and directory permissions validation
- **🎨 Professional UI** - Modern, responsive interface built with Tailwind CSS and Alpine.js
- **🔄 Language Switcher** - Beautiful dropdown with flag icons and native language names
- **🔧 Self-Contained Configuration** - All settings managed in config files, minimal environment dependencies
- **🏗️ Clean Architecture** - Service-oriented design with proper separation of concerns
- **📱 Mobile Responsive** - Works perfectly on all devices and screen sizes
- **🎉 User Experience** - Smooth animations, progress indicators, and celebration effects

📋 Requirements
--------------

[](#-requirements)

- PHP 8.1 or higher
- Laravel 10.0 or higher
- Composer

📦 Installation
--------------

[](#-installation)

Install the package via Composer:

```
composer require sabitahmadumid/laravel-launchpad
```

Publish the configuration file:

```
php artisan vendor:publish --tag="laravel-launchpad-config"
```

Optionally, publish the views for customization:

```
php artisan vendor:publish --tag="laravel-launchpad-views"
```

Optionally, publish the language files for customization:

```
php artisan vendor:publish --tag="laravel-launchpad-lang"
```

Or use the dedicated command:

```
php artisan launchpad:publish-lang
```

🌍 Internationalization (i18n)
-----------------------------

[](#-internationalization-i18n)

Laravel Launchpad supports multiple languages out of the box, making it perfect for global applications.

### 🗣️ Supported Languages

[](#️-supported-languages)

- **English** (en) - Default language
- **Multiple Languages** - Easily add any language with simple translation files

### 🚀 Quick Start with Languages

[](#-quick-start-with-languages)

The package automatically detects and applies user language preferences. No additional setup required!

### 🎛️ Language Features

[](#️-language-features)

- **🔄 Dynamic Language Switching** - Users can switch languages during installation/update
- **🎨 Beautiful Language Switcher** - Dropdown with flag icons and native names
- **📱 RTL Support Ready** - Infrastructure for right-to-left languages
- **🔤 Smart Fallbacks** - Falls back to English if translation missing
- **💾 Session Persistence** - Remembers user's language choice

### 📁 Language File Structure

[](#-language-file-structure)

```
resources/lang/vendor/launchpad/
├── en/
│   ├── common.php      # Common UI elements
│   ├── install.php     # Installation wizard
│   └── update.php      # Update wizard
└── {lang}/
    ├── common.php      # Translated UI elements
    ├── install.php     # Translated installation wizard
    └── update.php      # Translated update wizard

```

### 🛠️ Adding Custom Languages

[](#️-adding-custom-languages)

1. **Publish language files:**

    ```
    php artisan launchpad:publish-lang
    ```
2. **Create new language directory:**

    ```
    mkdir resources/lang/vendor/launchpad/es  # For Spanish
    ```
3. **Copy and translate files:**

    ```
    cp -r resources/lang/vendor/launchpad/en/* resources/lang/vendor/launchpad/es/
    ```
4. **Update configuration:**

    ```
    // config/launchpad.php
    'language' => [
        'available' => [
            'en' => ['name' => 'English', 'native' => 'English', 'flag' => '🇺🇸'],
            'es' => ['name' => 'Spanish', 'native' => 'Español', 'flag' => '��'],
            'fr' => ['name' => 'French', 'native' => 'Français', 'flag' => '��'],
            // Add any language you want
        ],
    ],
    ```

### 🎯 Language Configuration Options

[](#-language-configuration-options)

```
'language' => [
    'default' => 'en',                              // Default language
    'auto_detect' => true,                          // Auto-detect from browser
    'session_key' => 'launchpad_language',          // Session storage key
    'switcher' => [
        'enabled' => true,                          // Show language switcher
        'show_flags' => true,                       // Show flag icons
        'show_native_names' => true,                // Show native language names
        'position' => 'top-right',                  // Switcher position
    ],
],
```

### 🔧 Programmatic Language Control

[](#-programmatic-language-control)

```
// Get language service
$languageService = app(\SabitAhmad\LaravelLaunchpad\Services\LanguageService::class);

// Switch language
$languageService->setLanguage('es'); // or any available language

// Get current language
$current = $languageService->getCurrentLanguage();

// Check available languages
$available = $languageService->getAvailableLanguages();

// Check if RTL
$isRtl = $languageService->isRtl();
```

### 🌐 API Endpoints

[](#-api-endpoints)

```
# Switch language via POST
POST /launchpad/language/switch
{
    "language": "es",
    "redirect": "/install"
}

# Get available languages
GET /launchpad/language/available

# Get current language info
GET /launchpad/language/current
```

🔒 License System
----------------

[](#-license-system)

Laravel Launchpad includes a robust license validation system that **automatically** handles license key storage during the installation and update process. Users simply enter their license key during setup, and the system handles everything automatically.

### Quick Setup

[](#quick-setup)

1. **Publish the license validator:**

    ```
    php artisan launchpad:license-stub
    ```
2. **Configure your environment:**

    ```
    LAUNCHPAD_VALIDATOR_CLASS=App\Services\SimpleLicenseValidator
    LAUNCHPAD_LICENSE_KEY=your-license-key
    ```
3. **For development, disable license checks:**

    ```
    php artisan launchpad:license disable
    ```

### How It Works

[](#how-it-works)

#### During Installation/Update Flow

[](#during-installationupdate-flow)

1. **User enters license key** in the installation or update wizard
2. **System validates** the license with your license server
3. **Automatic storage** - If valid, the license key is automatically saved to the project's `.env` file
4. **Future verification** - The `isLicenseVerified()` method automatically checks the stored license

#### For Developers (Simple API)

[](#for-developers-simple-api)

```
use SabitAhmad\LaravelLaunchpad\Services\LicenseService;

$licenseService = app(LicenseService::class);

// Simple boolean check - handles everything automatically
if ($licenseService->isLicenseVerified()) {
    // License is valid, proceed with functionality
    return view('premium-feature');
} else {
    // License is invalid or missing
    return redirect()->route('license.required');
}
```

### Security Features

[](#security-features)

- **Automatic Environment Storage**: License keys automatically saved to `.env` file during verification
- **Encrypted Local Backup**: Secondary encrypted storage with restricted permissions
- **Bypass Protection**: Cannot be easily disabled via config manipulation in production
- **Grace Period**: Temporary failures don't immediately block access
- **Retry Mechanism**: Automatic retry with exponential backoff for network issues
- **🔒 Secure by Default** - Hard to bypass for normal users
- **👨‍💻 Developer Friendly** - Easy disable options and development keys
- **🎛️ Route-Specific Control** - Disable license checks for specific routes
- **🔄 Flexible Validation** - Support for multiple license server types
- **💾 Encrypted Storage** - Secure bypass file storage
- **🌍 Domain Binding** - License validation tied to specific domains

### Development License Keys

[](#development-license-keys)

For local development, these keys work automatically:

- `dev-license-key`
- `local-development`
- `testing-license`
- `bypass-license-check`

### License Commands

[](#license-commands)

#### Basic License Management

[](#basic-license-management)

```
# Disable license validation (development)
php artisan launchpad:license disable

# Enable license validation
php artisan launchpad:license enable

# Disable only for installation routes
php artisan launchpad:license disable --install

# Disable only for update routes
php artisan launchpad:license disable --update

# Force disable (ignore confirmations)
php artisan launchpad:license disable --force

# Publish validator stub
php artisan launchpad:license-stub
```

#### Advanced License Management

[](#advanced-license-management)

```
# Check license status
php artisan launchpad:license status

# Manually verify license key
php artisan launchpad:license verify

# Verify with specific key (will auto-save to .env if valid)
php artisan launchpad:license verify --key=your-license-key

# Remove stored license
php artisan launchpad:license remove

# Force remove without confirmation
php artisan launchpad:license remove --force

# Clear license cache
php artisan launchpad:license clear-cache
```

#### Local Development Commands

[](#local-development-commands)

```
# Enable license enforcement in local environment
php artisan launchpad:license enable-local

# Disable license enforcement in local environment
php artisan launchpad:license disable-local
```

**Note**: Local enforcement commands only work in local development environment and use encrypted flags for security.

#### Envato CodeCanyon Integration

[](#envato-codecanyon-integration)

Create a custom validator for Envato CodeCanyon products:

```
