mohamadtsn / laravel-supernova
it's a basic Management panel for laravel application
Installs: 313
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
Language:Blade
pkg:composer/mohamadtsn/laravel-supernova
Requires
- php: ^8.0|^8.1
- biscolab/laravel-recaptcha: ^6.0
- illuminate/auth: ^10.0
- illuminate/routing: ^10.0
- illuminate/support: ^10.0
- mohamadtsn/laravel-repository: ^2.0
- realrashid/sweet-alert: ^7.0
- spatie/laravel-permission: ^5.10
This package is auto-updated.
Last update: 2025-10-10 16:48:15 UTC
README
Laravel Supernova
Give a professional and powerful management panel as your Laravel App gift. 🎁
Installation: ⬇️
composer require mohamadtsn/laravel-supernova
configuration: ⚙️
Publishing Base Vendor Files
php artisan supernova:publish [tags] --force
Tag list:
- supernova-resources
- supernova-base-resources
- supernova-config
- supernova-migrations
- supernova-virtual-host-routes
- supernova-recaptcha-config
- supernova-basic-routes
Publishing Custom Vendor File
php artisan supernova:publish [tags] --force
Change locale to fa in config/app.php
'locale' => 'fa',
Change Parent Class User Model:
Put this in App\Models\User.php
use Mohamadtsn\Supernova\Models\User as SupernovaUser; // use supernova User Model use Mohamadtsn\Supernova\Classes\Traits\PermissionWrapper; class User extends SupernovaUser { use HasApiTokens, HasFactory, Notifiable, PermissionWrapper; // other class methods }
Add level to fillable fields in App\Models\User.php.
protected $fillable = [ 'level', ];
Add these seeders call in Database\Seeders\DatabaseSeeder.php in run() method:
class DatabaseSeeder extends Seeder { public function run() { // Other seeders call // You add seeders $this->call(UserSeeder::class); // #1 $this->call(PermissionSeeder::class); // #2 } }
Add these into guards section in config/auth.php:
'guards' => [ // other guard 'admin' => [ 'driver' => 'session', 'provider' => 'users', ], ],
Put these in app/Http/Kernel.php like below:
use App\Http\Middleware\Panel\CheckPermission; // use Middleware class CheckPermission class Kernel extends HttpKernel { protected $routeMiddleware = [ // other routeMiddleware 'permission' => CheckPermission::class, // add CheckPermission::class on this section ]; }
Change these in App/Http/Middleware/Authenticate.php in redirectTo method like below:
protected function redirectTo($request) { if ($request->expectsJson()) { return response()->json([ 'title' => 'access denied', 'text' => 'unauthorized ...!', 'type' => 'error' ], Response::HTTP_FORBIDDEN); } return route('panel.login'); }
add admin panel routes file routes/admin.php to App/Providers/RouteServiceProvider.php in boot() method
IMPORTANT!! Be sure to add before `web.php`.
Look carefully:For Run project With Virtual Domain:
public function boot() { $this->routes(function () { // other routes file Route::middleware('web') ->namespace($this->namespace) ->domain(config('supernova.management_url')) ->group(base_path('routes/admin.php')); // #1 add admin panel routes (admin.php) Route::middleware('web') ->namespace($this->namespace) ->domain(config('app.url')) ->group(base_path('routes/web.php')); // #2 web.php routes }); }
For Run project With Cli Serving (php artisan serve):
public function boot() { $this->routes(function () { // other routes file Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/admin.php')); // #1 add admin panel routes (admin.php) Route::middleware('web') ->namespace($this->namespace) ->domain(config('app.url')) ->group(base_path('routes/web.php')); // #2 web.php routes }); }
Setup Schema:
- Set database config connection in
.envfile - Migrate and seeding using the following commands:
php artisan migrate:fresh --seed // "Associated with" Drop All Tables & Migrate and seeding "Or" php artisan migrate --seed // "Without" Drop All Tables & Migrate and seeding
re-generate composer autoload:
composer dump-autoload
Usage
Method #1 ====> Setup with virtual host
-
Build a
virtual subdomainwith nameManagement- Example:
- origin domain =>
example.test// Main URL - subdomain domain =>
management.example.test// Admin Panel URL
- origin domain =>
- Example:
-
add param
Admin Panel URLtoenvfile with nameAPP_MANAGEMENT_URLlike below:APP_URL= http://shop.test APP_MANAGEMENT_URL= http://management.shop.test
-
add config
Admin Panel URLtoconfig/supernova.phpfile with namemanagement_urllike below:return [ // other configs 'management_url' => env('APP_MANAGEMENT_URL', 'http://management.example.test'), ]
-
Login to Panel
management.example.test/login -
Dashboard Panel
management.example.test/
Method #2 ====> Setup without virtual host
- publish basic routes:
php artisan supernova:publish supernova-basic-routes --force
- serve app with command:
php artisan serve
- Tip: You have access to
Supernova Panel Routesonly with Prefixpanel - Go to
127.0.0.1:8000/panel/login
Login to Panel
- Email:
admin@gmail.com - Password:
supernova@123
Enjoy it 👋