PHPackages                             ikechukwukalu/magicmake - 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. ikechukwukalu/magicmake

ActiveLibrary[Framework](/categories/framework)

ikechukwukalu/magicmake
=======================

A scaffolding package for an opinionated Laravel coding style.

v3.0.0(11mo ago)05.2k1[4 PRs](https://github.com/ikechukwukalu/magicmake/pulls)Apache-2.0PHPPHP &gt;=7.3CI passing

Since Feb 26Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/ikechukwukalu/magicmake)[ Packagist](https://packagist.org/packages/ikechukwukalu/magicmake)[ RSS](/packages/ikechukwukalu-magicmake/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (8)Dependencies (26)Versions (13)Used By (0)

MAGIC MAKE
==========

[](#magic-make)

[![Latest Version on Packagist](https://camo.githubusercontent.com/efb683c3471835d01e1a48c027873c3bf0e5d3f2546efeaeade193d33f87bd8a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696b656368756b77756b616c752f6d616769636d616b653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ikechukwukalu/magicmake)[![Quality Score](https://camo.githubusercontent.com/424f8bc46ceee6116719c51e4fd2a26801d3030425c78379eadd8625e5d8b63d/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f7175616c6974792f672f696b656368756b77756b616c752f6d616769636d616b652f6d61696e3f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/ikechukwukalu/magicmake/)[![Code Quality](https://camo.githubusercontent.com/756907407a78eb23bfc94c150b8c53267178591e9592e9a3bab093008180e92e/68747470733a2f2f696d672e736869656c64732e696f2f636f6465666163746f722f67726164652f6769746875622f696b656368756b77756b616c752f6d616769636d616b653f7374796c653d666c61742d737175617265)](https://www.codefactor.io/repository/github/ikechukwukalu/magicmake)

[![Github Workflow Status](https://camo.githubusercontent.com/490c19e725a8879ff710e763b6e123385dd4377c8457ecfb961fc060568a657f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f696b656368756b77756b616c752f6d616769636d616b652f6d616769636d616b652e796d6c3f6272616e63683d6d61696e267374796c653d666c61742d737175617265)](https://github.com/ikechukwukalu/magicmake/actions/workflows/magicmake.yml)[![Total Downloads](https://camo.githubusercontent.com/71f84e67c7439731987615227014e6ee69c325769d99ad363922dc01bdb1ca35/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f696b656368756b77756b616c752f6d616769636d616b653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ikechukwukalu/magicmake)[![Licence](https://camo.githubusercontent.com/681f06e5d90338546fd6c1473a0f3ccc5f35606522cc9e973e82571d8e9fd2f1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f696b656368756b77756b616c752f6d616769636d616b653f7374796c653d666c61742d737175617265)](https://github.com/ikechukwukalu/magicmake/blob/main/LICENSE.md)

A Laravel scaffolding package for an opinionated Laravel coding style.

REQUIREMENTS
------------

[](#requirements)

- PHP 8.2+
- Laravel 11+

STEPS TO INSTALL
----------------

[](#steps-to-install)

```
composer require ikechukwukalu/magicmake
```

SET UP LARAVEL
--------------

[](#set-up-laravel)

```
php artisan install:api
```

INIT CLASSES
------------

[](#init-classes)

To initialize prepared classes for a new laravel app. This would only run when `env('APP_ENV') === local` and `env(MAGIC_INIT_LOCK) === false`.

```
php artisan magic:init
```

MODEL BASED CLASSES
-------------------

[](#model-based-classes)

To generate all model based prepared classes.

```
php artisan magic:model UserKyc
```

To generate individual model based prepared classes.

```
php artisan magic:contract UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:repository UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:service UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:controller UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:createRequest UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:updateRequest UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:deleteRequest UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:readRequest UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:api UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:test UserKyc --variable=userKyc --underscore=user_kyc

php artisan magic:factory UserKyc --variable=userKyc --underscore=user_kyc
```

### Note

[](#note)

Add this to `config/api.php`.

```
    'paginate' => [
        ...
        'user_kyc' => [
            'pageSize' => 10,
        ],
    ],
```

Add this to `app/Providers/RepositoryServiceProvider.php`.

```
use App\Contracts\UserKycRepositoryInterface;
use App\Repositories\UserKycRepository;

public function register(): void
{
    ...
    $this->app->bind(UserKycRepositoryInterface::class, UserKycRepository::class);
}
```

FINISHING SETUP
---------------

[](#finishing-setup)

If you did run `php artisan magic:init`.

Add to the `composer.json` file.

```
"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    },
    "files": [
        "app/Http/Helpers.php"
    ]
},
```

After that run:

```
composer dump-autoload
```

Add to `bootstrap/providers.php`.

```
/*
    * Package Service Providers...
    */
App\Providers\EventServiceProvider::class,
App\Providers\MacroServiceProvider::class,
App\Providers\RepositoryServiceProvider::class,
```

Add to `bootstrap/app.php`

```
    ->withMiddleware(function (Middleware $middleware) {
        //
        $middleware->alias([
            'check.email.verification' => \App\Http\Middleware\CheckEmailVerification::class,
            'check.user.is.admin' => \App\Http\Middleware\CheckIfUserIsAdmin::class,
            'check.phone.verification' => \App\Http\Middleware\CheckPhoneVerification::class,
        ]);
    })
```

Add to `vite.config.js`

```
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/sass/app.scss',
                'resources/js/app.js',
                'resources/css/app.css',
            ],
            refresh: true,
        }),
    ],
});
```

### Project setup

[](#project-setup)

```
php artisan ui bootstrap
npm install
composer install
php artisan migrate --seed
```

### Run development server

[](#run-development-server)

```
npm run build
php artisan serve
php artisan test
```

NOTE
----

[](#note-1)

### Publish notification blade

[](#publish-notification-blade)

Add the following line above this code line `@if ($emailData->action)` in the `notification.blade.php` file:

```
@if (isset($emailData->highlightText))
@component('mail::panel', ['style' => 'background-color: #f0f8ff; border-radius: 0.5rem; padding: 16px;text-align: center'])

{{ $emailData->highlightText }}

@endcomponent
@endif
```

### App notification helpers

[](#app-notification-helpers)

```
$userNotificationData = new UserNotificationData($user->id, $title, $text);
$user->notify(new DatabaseNotification($userNotificationData->toObject()));

$emailData = new EmailData(subject: $title, lines: [$text], from: env('MAIL_FROM_ADDRESS'),
    remark: null, action: false, action_text: null,
    action_url: null, attachements: null);
$user->notify(new EmailNotification($emailData->toObject()));

$smsData = new SmsData($user->name, $text);
$user->notify(new SmsNotification($smsData->toObject()));
```

### Advanced search and table filter helpers

[](#advanced-search-and-table-filter-helpers)

Sample usage:

```
public function getPaginated(int $pageSize): LengthAwarePaginator
{
    /**
     * Search a parent table via the user_id foreign key on the user_deliveries table
     */
    $search = advancedSearch('user', 'user_id', ['unit_number', 'name', 'email', 'first_name', 'last_name', 'middle_name']);

    /**
     * Search a child table via the user_delivery_id foreign key on the user_delivery_items table
     */
    $search2 = advancedSearch('userDeliveryItems', 'user_delivery_id', ['tracking_number', 'name', 'delivery_vendor'], 'user_delivery_items');

    return UserDelivery::with(['user', 'userDeliveryItems'])
                ->search($search)
                ->search($search2)
                ->orWhere(function($query) {
                    $query->search('ref_number');
                })
                ->order()
                ->date()
                ->filter($this->whiteList)
                ->paginate(pageSize($pageSize));
}
```

LICENSE
-------

[](#license)

The MM package is a software licensed under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0).

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance51

Moderate activity, may be stable

Popularity23

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 93.9% 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 ~66 days

Recently: every ~41 days

Total

8

Last Release

348d ago

Major Versions

v1.0.1 → v2.0.02024-12-15

v2.0.4 → v3.0.02025-06-02

### Community

Maintainers

![](https://www.gravatar.com/avatar/9f17e9c52bd3fcd53771df07c9299bf0e787531d9bfd60daaaeb40f7f03769fe?d=identicon)[ikay007](/maintainers/ikay007)

---

Top Contributors

[![monitecture](https://avatars.githubusercontent.com/u/100952206?v=4)](https://github.com/monitecture "monitecture (31 commits)")[![ikechukwukalu](https://avatars.githubusercontent.com/u/60310041?v=4)](https://github.com/ikechukwukalu "ikechukwukalu (1 commits)")[![nowodev](https://avatars.githubusercontent.com/u/43044740?v=4)](https://github.com/nowodev "nowodev (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ikechukwukalu-magicmake/health.svg)

```
[![Health](https://phpackages.com/badges/ikechukwukalu-magicmake/health.svg)](https://phpackages.com/packages/ikechukwukalu-magicmake)
```

###  Alternatives

[laravel/jetstream

Tailwind scaffolding for the Laravel framework.

4.1k19.8M136](/packages/laravel-jetstream)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[bagisto/bagisto

Bagisto Laravel E-Commerce

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

Laravel Reverb provides a real-time WebSocket communication backend for Laravel applications.

1.5k9.4M48](/packages/laravel-reverb)[laravel/ui

Laravel UI utilities and presets.

2.7k134.9M601](/packages/laravel-ui)[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M532](/packages/laravel-passport)

PHPackages © 2026

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