The pieces every Laravel app ends up rebuilding.
Authorization, upstream updates, activity history, release notes, command tracking, extracted from the apps we run in production and published as plain Composer packages.
# 1. Setup (one-time)php artisan laravelplus:setup# 2. Check for updatesphp artisan laravelplus:check# 3. Apply updates (creates PR by default)php artisan laravelplus:updateuse Laravelplus\Fortress\Attributes\Authorize;class PostController{ #[Authorize( public: false, roles: ['admin', 'editor'], permissions: ['create', 'update'], owner: App\Models\Post::class, overrideKey: 'author_id' )] public function update(Request $request, $id) { // Update logic }}use LaravelPlus\UserHistory\Traits\HasUserActivity;class Post extends Model{ use HasUserActivity;}$post->recordActivity('status_changed', 'Post status updated', [ 'old_status' => 'draft', 'new_status' => 'published']);use LaravelPlus\VersionPlatformManager\Models\PlatformVersion;use LaravelPlus\VersionPlatformManager\Services\VersionService;PlatformVersion::create([ 'version' => '1.0.0', 'title' => 'Major Update', 'is_active' => true, 'released_at' => now(),]);$needsUpdate = app(VersionService::class)->userNeedsUpdate($user);return [ 'enabled' => env('COMMANDER_ENABLED', true), 'url' => env('COMMANDER_URL', 'admin/commander'), 'middleware' => env('COMMANDER_MIDDLEWARE', ['auth', 'web']), 'track_output' => env('COMMANDER_TRACK_OUTPUT', true), 'track_user' => env('COMMANDER_TRACK_USER', true), 'retention_days' => env('COMMANDER_RETENTION_DAYS', 90),];use LaravelPlus\FeatureRequests\Models\FeatureRequest;use LaravelPlus\FeatureRequests\Models\Vote;$featureRequest = FeatureRequest::create([ 'title' => 'Dark Mode Support', 'category_id' => 1, 'priority' => 'medium', 'user_id' => auth()->id(),]);Vote::create([ 'user_id' => auth()->id(), 'feature_request_id' => $featureRequest->id, 'vote_type' => 'up',]);Powerful packages, one job each.
Each one installs with Composer and follows Laravel's own conventions: service providers, config files, migrations, artisan commands.
Laravel Updater
Keep your project in step with the starter kit it came from.
laravelplus/laravel-updaterFortress
Attribute-based authorization, declared on the method it protects.
laravelplus/fortressUser History
A searchable record of what your users did, and to what.
laravelplus/user-historyVersion Manager
Tell users what's new since the last version they saw.
laravelplus/version-platform-managerCommander
Run, track and audit artisan commands from the browser.
laravelplus/commanderFeature Requests
A feature-request board with voting, inside your own app.
laravelplus/feature-requestsThe framework is enough. Almost.
Every app we shipped needed the same missing pieces.
Laravel covers routing, queues, auth and the database. What it leaves to you is the plumbing between the framework and the product: authorization rules, audit trails, release notes, keeping in step with a starter kit.
We wrote that plumbing once per app, then stopped. LaravelPlus is the version we keep: extracted, used in production, published.
More in the box.
Newer and more specialised packages. Smaller install counts, same rules: one job, Laravel-native, readable source.
Content Security
Defense-in-depth for uploads: malware scanning and MIME / magic-byte verification before a file reaches storage.
laravelplus/content-securityAttrify
Validation rules declared as PHP attributes on request classes, next to the fields they guard.
laravelplus/attrifyETL Manifesto
Declarative ETL from YAML manifests: extract, transform and load without hand-written export scripts.
laravelplus/etl-manifestoHow we build them.
Extracted, not invented
A package earns its place by being needed in a real app first. Nothing here started as a side project looking for a problem.
Laravel-native
No parallel framework, no new mental model. Service providers, config, migrations and artisan, the way Laravel already works.
Small enough to read
If you can't read the source in an afternoon, it is doing too much. Fork it, extend it, or delete it.
Start with composer require.
Everything installs on its own; nothing forces the rest along.