PHPackages                             gem-partij/gemboot-lara - 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. [Framework](/categories/framework)
4. /
5. gem-partij/gemboot-lara

ActiveLibrary[Framework](/categories/framework)

gem-partij/gemboot-lara
=======================

Gemboot Lara - Laravel package for supporting SMVC development method

7.0.6(3mo ago)14.4k↓33.3%[2 issues](https://github.com/gem-partij/gemboot-lara/issues)[5 PRs](https://github.com/gem-partij/gemboot-lara/pulls)1MITPHPPHP ^8.2CI passing

Since Nov 23Pushed 3mo agoCompare

[ Source](https://github.com/gem-partij/gemboot-lara)[ Packagist](https://packagist.org/packages/gem-partij/gemboot-lara)[ RSS](/packages/gem-partij-gemboot-lara/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (6)Versions (112)Used By (1)

Gemboot Lara
============

[](#gemboot-lara)

[![Latest Stable Version](https://camo.githubusercontent.com/0e6ca9850115590a22527e136c03e174ffb866c92eb8e8107073d51422a8cb1e/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f762f737461626c65)](https://packagist.org/packages/gem-partij/gemboot-lara)[![Total Downloads](https://camo.githubusercontent.com/05c4912ef8f19b6060f6e95d5a3f82889217f88975d629080f3c6157d76f9bb9/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f646f776e6c6f616473)](https://packagist.org/packages/gem-partij/gemboot-lara)[![Latest Unstable Version](https://camo.githubusercontent.com/52ae6a4be6fff4669d857838e84d4e1808c0ab917aec57c926df3015f1d776b3/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f762f756e737461626c65)](https://packagist.org/packages/gem-partij/gemboot-lara)[![License](https://camo.githubusercontent.com/e2291cdf9ce2c40f0363fe65c51faf6de2b2e544a242f8eb2dd6cae4b2b6997f/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f6c6963656e7365)](https://packagist.org/packages/gem-partij/gemboot-lara)[![Monthly Downloads](https://camo.githubusercontent.com/5e01faa26402c40192b970fba1a13e6a995bdc3377ec876afa893eced10a7e46/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f642f6d6f6e74686c79)](https://packagist.org/packages/gem-partij/gemboot-lara)[![Daily Downloads](https://camo.githubusercontent.com/e90461aba57f63a477aa45362e4f9f1e28cdd6bbbfd4679269a2f2ec48dad4fd/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f642f6461696c79)](https://packagist.org/packages/gem-partij/gemboot-lara)[![composer.lock](https://camo.githubusercontent.com/83aac70cb88865e02952dac320b147c5826a02c53e7d9662612089708a00a963/68747470733a2f2f706f7365722e707567782e6f72672f67656d2d70617274696a2f67656d626f6f742d6c6172612f636f6d706f7365726c6f636b)](https://packagist.org/packages/gem-partij/gemboot-lara)[![SensioLabsInsight](https://camo.githubusercontent.com/d0accb0a398569456f92319db617d94c36e29876d9a047256cf53347743d9e1d/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f35363135613265352d656633662d346364662d616337662d3664656535666534663831312f6d696e692e706e67)](https://insight.sensiolabs.com/projects/5615a2e5-ef3f-4cdf-ac7f-6dee5fe4f811)

Laravel package for supporting SMVC development method

What It Does
------------

[](#what-it-does)

Before installing gemboot package:

```
use App\Models\User;

class UserControllerApi extends Controller {

    // method to return all users
    public function index() {
        $status = 200;
        $message = 'Success!';
        $data = [];

        try {
            // add user data to response
            $data = User::all();
        } catch(\Exception $e) {
            // if catch error...

            // log error
            \Log::error($e->getMessage());
            \Log::error($e->getTraceAsString());

            // add error response
            $status = 500;
            $message = "Internal Server Error";
            $data = [
                'error' => $e->getMessage(),
            ];
        }

        // return response json
        return response()->json([
            'status' => $status,
            'message' => $message,
            'data' => $data,
        ], $status);
    }

}
```

After installing gemboot package:

```
use GembootResponse;
use App\Models\User;

class UserControllerApi extends Controller {

    // method to return all users
    public function index() {
        return GembootResponse::responseSuccessOrException(function() {
            return User::all();
        });
    }

}
```

will get the same response:

```
/* Success Response */
{
    "status": 200,
    "message": "Success!",
    "data": [
        /* all user data... */
    ]
}

/* Error Response */
{
    "status": 500, /* it could be 400 to 500 error status code */
    "message": "Error!",
    "data": [
        /* all error data... */
    ]
}
```

Documentation, Installation, and Usage Instructions
---------------------------------------------------

[](#documentation-installation-and-usage-instructions)

See the [DOCUMENTATION](https://github.com/gem-partij/gemboot-lara/tree/master/docs) for detailed installation and usage instructions.

Support Policy
--------------

[](#support-policy)

Only the latest version will get new features.

Package VersionLaravel VersionPHP Version0.5.x&lt; 5.51.x^5.5, ^6, ^77.2 - 8.02.x87.3 - 8.13.x98.0 - 8.24.x108.1 - 8.35.x118.2 - 8.36.x^11, ^12^8.27.x^11, ^12^8.2Installation
------------

[](#installation)

Require the `gem-partij/gemboot-lara` package in your `composer.json` and update your dependencies:

```
composer require gem-partij/gemboot-lara
```

Optional: The service provider will automatically get registered. Or you may manually add the service provider in your config/app.php file:

```
'providers' => [
    // ...
    \Gemboot\GembootServiceProvider::class,
];
```

Optional: The aliases will automatically get registered. Or you may manually add the gemboot aliases in your config/app.php file:

```
'aliases' => [
    // ...
    'GembootBadRequestException' => Gemboot\Exceptions\BadRequestException::class,
    'GembootForbiddenException' => Gemboot\Exceptions\ForbiddenException::class,
    'GembootNotFoundException' => Gemboot\Exceptions\NotFoundException::class,
    'GembootServerErrorException' => Gemboot\Exceptions\ServerErrorException::class,
    'GembootUnauthorizedException' => Gemboot\Exceptions\UnauthorizedException::class,

    'GembootRequest' => Gemboot\Facades\GembootRequestFacade::class,
    'GembootResponse' => Gemboot\Facades\GembootResponseFacade::class,

    'GembootController' => Gemboot\Controllers\CoreRestController::class,
    'GembootProxyController' => Gemboot\Controllers\CoreRestProxyController::class,
    'GembootResourceController' => Gemboot\Controllers\CoreRestResourceController::class,

    'GembootModel' => Gemboot\Models\CoreModel::class,

    'GembootService' => Gemboot\Services\CoreService::class,
];
```

Gemboot Gateway (Additional Package)
------------------------------------

[](#gemboot-gateway-additional-package)

### Middleware

[](#middleware)

To use Gemboot Gateway for all your routes, add the `CheckToken` middleware in the `$middleware` property of `app/Http/Kernel.php` class:

```
protected $middleware = [
    // ...
    \Gemboot\Gateway\Middleware\CheckToken::class,
];
```

### Configuration

[](#configuration)

The defaults are set in `config/gemboot_gw.php`. Publish the config to copy the file to your own config:

```
php artisan vendor:publish --tag="gemboot-gateway"
```

Gemboot Auth (Additional Package)
---------------------------------

[](#gemboot-auth-additional-package)

### Middleware

[](#middleware-1)

To use Gemboot Auth middleware for your routes, add the `TokenValidated`, `HasRole`, `HasPermissionTo` middleware in the `$routeMiddleware` property of `app/Http/Kernel.php` class:

```
protected $routeMiddleware = [
    // ...
    'token-validated' => \Gemboot\Middleware\TokenValidated::class,
    'role' => \Gemboot\Middleware\HasRole::class,
    'permission' => \Gemboot\Middleware\HasPermissionTo::class,
];
```

### Configuration

[](#configuration-1)

The defaults are set in `config/gemboot_auth.php`. Publish the config to copy the file to your own config:

```
php artisan vendor:publish --tag="gemboot-auth"
```

### Routes

[](#routes)

add Gemboot AuthLibrary in your routes if you want to use it, example:

```
use Illuminate\Http\Request;
use Gemboot\Libraries\AuthLibrary;

Route::middleware('api')->prefix('auth')->group(function() {
    Route::post('login', function(Request $request) {
        return (new AuthLibrary)->login($request->npp, $request->password, true);
    });

    Route::get('me', function() {
        return (new AuthLibrary)->me(true);
    });

    Route::get('validate-token', function() {
        return (new AuthLibrary)->validateToken(true);
    });

    Route::get('has-role', function(Request $request) {
        return (new AuthLibrary)->hasRole($request->role_name, true);
    });

    Route::get('has-permission-to', function(Request $request) {
        return (new AuthLibrary)->hasPermissionTo($request->permission_name, true);
    });

    Route::post('logout', function() {
        return (new AuthLibrary)->logout(true);
    });
});
```

Gemboot File Handler (Additional Package)
-----------------------------------------

[](#gemboot-file-handler-additional-package)

### Configuration

[](#configuration-2)

The defaults are set in `config/gemboot_file_handler.php`. Publish the config to copy the file to your own config:

```
php artisan vendor:publish --tag="gemboot-file-handler"
```

### File Handler Usage

[](#file-handler-usage)

Now you can upload image or document using gemboot file handler.

```
use Illuminate\Http\Request;
use Gemboot\FileHandler\FileHandler;

class ExampleController extends Controller {

    public function uploadImage(Request $request) {
        $image = $request->file_image;
        $new_filename = "Gambar.jpeg";
        $save_path = "/gambar/2020";

        return (new FileHandler($image))
                ->uploadImage($new_filename, $save_path)
                ->object();
    }

}
```

The **uploadImage**, **uploadDocument** method returns an instance of **Illuminate\\Http\\Client\\Response**, which provides a variety of methods that may be used to inspect the response:

```
$response->body() : string;
$response->json($key = null) : array|mixed;
$response->object() : object;
$response->collect($key = null) : Illuminate\Support\Collection;
$response->status() : int;
$response->ok() : bool;
$response->successful() : bool;
$response->redirect(): bool;
$response->failed() : bool;
$response->serverError() : bool;
$response->clientError() : bool;
$response->header($header) : string;
$response->headers() : array;
```

more at:

Testing
-------

[](#testing)

Run the tests with:

```
composer test
```

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security
--------

[](#security)

If you discover any security-related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Angger Priyardhan Putro](https://github.com/anggerpputro)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance65

Regular maintenance activity

Popularity22

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity86

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 99.3% 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 ~21 days

Recently: every ~3 days

Total

106

Last Release

108d ago

Major Versions

2.3.1 → 3.1.02022-12-23

3.x-dev → 4.0.02023-06-12

4.x-dev → 5.0.02024-05-03

5.x-dev → 6.0.02025-03-05

6.x-dev → 7.0.02026-01-08

PHP version history (6 changes)1.0.1PHP &gt;=7

0.5.0PHP &gt;=5.4

2.1.6PHP ^7.3|^8.0

3.0.0PHP ^8.0

4.0.0PHP ^8.1

5.0.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/7a8e7b16680d107aa03f710bbacde22333cecdbcda44f809db0a3b73a37e7678?d=identicon)[anggerpputro](/maintainers/anggerpputro)

---

Top Contributors

[![anggerpputro](https://avatars.githubusercontent.com/u/21016176?v=4)](https://github.com/anggerpputro "anggerpputro (143 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

gemboot-gatewaygemboot-laralaravelmiddlewarephpphpframeworklaravelgemboot

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/gem-partij-gemboot-lara/health.svg)

```
[![Health](https://phpackages.com/badges/gem-partij-gemboot-lara/health.svg)](https://phpackages.com/packages/gem-partij-gemboot-lara)
```

###  Alternatives

[bagisto/bagisto

Bagisto Laravel E-Commerce

26.2k161.6k7](/packages/bagisto-bagisto)[krayin/laravel-crm

Krayin CRM

22.0k32.8k1](/packages/krayin-laravel-crm)[pestphp/pest-plugin-laravel

The Pest Laravel Plugin

22044.1M7.9k](/packages/pestphp-pest-plugin-laravel)[unopim/unopim

UnoPim Laravel PIM

9.4k1.8k](/packages/unopim-unopim)[kompo/kompo

Laravel &amp; Vue.js FullStack Components for Rapid Application Development

11812.4k21](/packages/kompo-kompo)[hypervel/framework

The Hypervel framework.

1012.1k6](/packages/hypervel-framework)

PHPackages © 2026

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