jmrashed/laravel-installer

A complete web installer for Laravel applications, making the setup process simple and user-friendly.

v1.0.3 2025-02-14 05:19 UTC

This package is auto-updated.

Last update: 2025-02-14 09:31:35 UTC


README

Latest Stable Version Total Downloads Monthly Downloads License Stars Forks

Laravel Installer is a complete package designed to simplify the installation process for Laravel projects. This installer handles system requirement checks, environment configuration, database setup, and purchase code validation.

πŸ“Š Statistics

  • Total Downloads: Total Downloads
  • Monthly Downloads: Monthly Downloads
  • GitHub Stars: Stars
  • GitHub Forks: Forks

🌟 Features

  • System Requirements Check: Automatically verifies PHP version and required extensions.
  • Environment File Setup: Helps create and configure the .env file.
  • Database Configuration: Offers the option to run migrations, seeders, or import an SQL dump.
  • Purchase Code Validation: Built-in validation for purchase codes.
  • User-Friendly Interface: A guided step-by-step installation process with a simple interface.

πŸ› οΈ Installation

To install the package, run the following command:

composer require jmrashed/laravel-installer

Then, publish the configuration file:

php artisan vendor:publish --provider="Jmrashed\LaravelInstaller\Providers\LaravelInstallerServiceProvider"
php artisan vendor:publish --tag=installer-config

πŸš€ How to Use

After installation, run the installer using:

php artisan installer:run

The installer will guide you through these steps:

  1. System Requirements Check: Ensures the necessary PHP version and extensions are installed.
  2. Environment File Setup: Prompts for database credentials and generates the .env file.
  3. Database Setup: Choose to run migrations and seeders or import a SQL dump.
  4. Purchase Code Validation: If enabled, the user is required to enter their purchase code.
  5. Completion: Confirms successful installation.

envato validation

sample api response from your existing website

{
  "message": "Welcome to the Envato Purchase Validation API",
  "account1": {
    "token": "fsHuTBwXZTlEqZYQacniBeNZFCrT01eZ"
  },
  "account2": {
    "token": "aGPUug8SeQagLaSDZ3LXdKQ8x0hHNtlc"
  },
  "validation": {
    "url": "https://api.envato.com/v3/market/author/sale"
  }
}

Update your api endpoint

To get barrier token update the API endpoint

   $envatoApiTokenUrl = 'http://your-domain.com/api/get-envato-barrier-token';

To Store verification data to your application update the API endpoint

   $envatoApiStoreUrl = 'http://your-domain.com/api/store-envato-verification-response';

Sample response

{
  "amount": "32.06",
  "sold_at": "2024-01-28T15:21:32+11:00",
  "license": "Regular License",
  "support_amount": "0.00",
  "supported_until": null,
  "item": {
    "id": 1234567890,
    "name": "product Title",
    "number_of_sales": 169,
    "author_username": "author_username",
    "author_url": "https://codecanyon.net/user/author_username",
    "url": "https://codecanyon.net/item/product/34567890",
    "site": "codecanyon.net",
    "classification": "mobile/flutter",
    "classification_url": "https://codecanyon.net/category/mobile/flutter",
    "price_cents": 11900,
    "author_image": "https://s3.envato.com/files/396614067/80x80.jpg",
    "summary": "Software Version: Flutter 2.x, Flutter 1.x, Other",
    "published_at": "2022-06-14T01:38:25+10:00",
    "trending": false
  },
  "buyer": "keosovannboravann",
  "purchase_count": 1
}

πŸ“‚ Directory Structure

Here’s a simplified structure of the project directories and key files:

- πŸ“ src/
   - πŸ“ Config/
      - πŸ“„ installer.php
   - πŸ“ Controllers/
      - πŸ“„ DatabaseController.php
      - πŸ“„ EnvironmentController.php
   - πŸ“ Events/
      - πŸ“„ EnvironmentSaved.php
      - πŸ“„ LaravelInstallerFinished.php
   - πŸ“ Helpers/
      - πŸ“„ DatabaseManager.php
      - πŸ“„ EnvironmentManager.php
   - πŸ“ Middleware/
      - πŸ“„ canInstall.php
      - πŸ“„ canUpdate.php
   - πŸ“ Providers/
      - πŸ“„ LaravelInstallerServiceProvider.php
   - πŸ“ Routes/
      - πŸ“„ web.php
   - πŸ“ Views/
      - πŸ“ layouts/
         - πŸ“„ master-update.blade.php
         - πŸ“„ master.blade.php
      - πŸ“ update/
         - πŸ“„ finished.blade.php
         - πŸ“„ overview.blade.php
      - πŸ“„ environment-classic.blade.php
      - πŸ“„ environment-wizard.blade.php
   - πŸ“ assets/
      - πŸ“ css/
         - πŸ“„ style.css
         - πŸ“„ style.css.map
      - πŸ“ fonts/
         - πŸ“„ FontAwesome.otf
         - πŸ“„ fontawesome-webfont.eot
      - πŸ“ img/
         - πŸ“ favicon/
            - πŸ“„ favicon-16x16.png
            - πŸ“„ favicon-32x32.png
         - πŸ“„ background.png
         - πŸ“„ pattern.png
- πŸ“„ LICENSE
- πŸ“„ README.md

βš™οΈ Configuration

The published configuration file can be found at:

config/installer.php

This allows you to customize checks and paths, such as setting the SQL dump path for import during installation.

πŸ“₯ Purchase Code Validation

If your system requires purchase code validation, you can customize the validation logic in the validatePurchaseCode function. Here’s an example:

if (!$this->validatePurchaseCode($code)) {
    throw new Exception('Invalid purchase code.');
}

πŸ“· Screenshots

πŸ”§ System Requirements

To ensure the Laravel Installer works as expected, your environment must meet the following requirements:

  • PHP: 8.0 or higher
  • Laravel: 9.0 or higher
  • PHP Extensions:
    • mbstring
    • openssl
    • pdo
    • tokenizer
    • xml
    • ctype
    • json

Force Publishing

php artisan vendor:publish --tag=laravelinstaller --force

🀝 Contributing

Contributions are welcome! If you want to contribute:

  1. Fork the repository.
  2. Create a new feature branch: git checkout -b feature-branch.
  3. Commit your changes: git commit -m 'Add new feature'.
  4. Push to the branch: git push origin feature-branch.
  5. Open a pull request on GitHub.

πŸ“ License

This package is licensed under the MIT license.

πŸ“¬ Support

For support, feel free to open an issue on the GitHub repository or contact us directly.