bangsamu / plugin-manager
Dashboard plugin manager for installing/removing/updating bangsamu/* packages via UI — WordPress-like plugin experience for Laravel.
v0.0.0
2025-08-21 08:03 UTC
Requires
- php: >=8.1
- illuminate/support: ^10.0|^11.0|^12.0
- symfony/process: ^6.0|^7.0
This package is not auto-updated.
Last update: 2025-09-05 06:37:08 UTC
README
WordPress-style plugin dashboard for Laravel to install/update/remove packages in the bangsamu/*
namespace.
Features
- Discover packages from Packagist vendor:
bangsamu
- Install / Update / Remove from dashboard
- Shows installed status & version
- Configurable middleware (e.g.,
auth
) - Simple Tailwind UI
⚠️ Security note: Executing Composer from the web is powerful and risky. Restrict access via middleware and allowlist commands in production.
Install (into your Laravel 10/11/12 app)
composer require bangsamu/plugin-manager:*@dev
If you are using the local path for testing this demo:
// composer.json (root of your app) "repositories": [ {"type":"path","url":"packages/bangsamu/plugin-manager"} ]
Then:
composer require bangsamu/plugin-manager:*
php artisan vendor:publish --tag=plugin-manager-config
php artisan vendor:publish --tag=plugin-manager-views
Add route (optional if you want custom prefix) in routes/web.php
:
Route::middleware(config('plugin-manager.middleware', ['web']))->group(function () { \Bangsamu\PluginManager\PluginManager::routes(); });
Open: /plugin-manager
Config
config/plugin-manager.php
return [ 'vendor' => env('PM_VENDOR', 'bangsamu'), 'route_prefix' => env('PM_PREFIX', 'plugin-manager'), 'middleware' => explode(',', env('PM_MIDDLEWARE', 'web,auth')), // protect in prod! 'timeout' => (int) env('PM_COMPOSER_TIMEOUT', 600), 'allow_remove' => (bool) env('PM_ALLOW_REMOVE', true), 'allow_commands' => ['require','update','remove'], ];
Environment
PM_VENDOR=bangsamu
PM_PREFIX=plugin-manager
PM_MIDDLEWARE=web,auth
PM_COMPOSER_TIMEOUT=600
PM_ALLOW_REMOVE=true
Screenshots
- Index list with install/update/remove buttons
- Modal output log (composer stdout/stderr)