camanru / fastleo
Admin panel for Laravel sites: each section is described by a single resource class
Requires
- php: ^8.4
- bacon/bacon-qr-code: ^3.1
- intervention/image: ^4
- laravel/framework: ^13.32
- laravel/mcp: ^1.0
- openspout/openspout: ^5.13
- pragmarx/google2fa: ^9.1
- symfony/html-sanitizer: ^8.1
Requires (Dev)
- driftingly/rector-laravel: ^2.7
- larastan/larastan: ^3.13
- laravel/pint: ^1.32
- orchestra/testbench: ^11.3
- pestphp/pest: ^5.3
- pestphp/pest-plugin-browser: ^5.1
- pestphp/pest-plugin-laravel: ^5.0
- pestphp/pest-plugin-type-coverage: ^5.0
- rector/rector: ^2.8
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-master
- 4.6.0
- 4.5.0
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.1
- 4.1.0
- 4.0.0
- 0.1.43
- 0.1.41
- 0.1.40
- 0.1.39
- 0.1.37
- 0.1.36
- 0.1.35.2
- 0.1.35.1
- 0.1.35
- 0.1.34
- 0.1.33
- 0.1.32
- 0.1.31
- 0.1.30
- 0.1.29
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
This package is auto-updated.
Last update: 2026-10-31 19:39:07 UTC
README
An admin panel for Laravel sites. Each admin section is described by a single resource class: fields, list, permissions. The interface is prebuilt (Blade, Tailwind, Alpine.js), so your site does not need npm.
The admin interface and the documentation in
docs/are in Russian.
What's included:
- Sections: a list with search, filters, sorting and pagination; a form with tabs and columns; a detail view, trash, manual ordering and trees; per-record and bulk actions; Excel/CSV export and import.
- 35 field types and custom fields: text, numbers, dates, choices, relations (BelongsTo, BelongsToMany, HasMany, HasOne), images with WebP variants, files, gallery, rich text editor, Markdown, JSON fields (Repeater, KeyValue, the Blocks page builder), SEO, translatable fields.
- Admin environment: a dashboard with widgets, site settings, custom pages, an activity log with rollback, an error log, notifications with Telegram and Max bots, Ctrl+K search, sitemap and robots.txt, closing the site for visitors, a file manager, and an optional connection to the SoftNetica site maintenance service.
- Security: a separate login with rate limits, two-factor authentication, permissions via model Policies, only declared fields are written, upload protection (details).
- Claude: a skill and Laravel Boost guidelines, the
fastleo:doctorandfastleo:inspectcommands, an MCP server — you can ask for a section in a single sentence (details).
Dark mode and mobile layout work out of the box.
Coming from 2.x or 3.0? 4.0 is a new admin panel, not an upgrade of the old one — sections are described again as classes and data formats change; see the migration guide. Moving from another admin panel (MoonShine, a hand-made one)? See moving to fastleo. What's new — CHANGELOG.
Requirements
- PHP 8.4 or newer
- Laravel 13
- A queue is optional: with
php artisan queue:workimages, imports and notifications are processed in the background, without it — during the request
Installation in 5 minutes
composer require camanru/fastleo php artisan fastleo:install
Enable admin access in your user model:
use Fastleo\Auth\FastleoUser; use Fastleo\Auth\HasFastleoAccess; class User extends Authenticatable implements FastleoUser { use HasFastleoAccess; }
Add the fastleo_admin column and create an administrator:
php artisan migrate php artisan fastleo:user admin@example.com
Open https://example.com/fastleo and log in.
Your first section
A section is a class in app/Fastleo. The command below creates a stub with fields based on the table columns; then adjust the labels and the icon — you will get something like this:
php artisan fastleo:make-resource Doctor --generate
// app/Fastleo/DoctorResource.php namespace App\Fastleo; use App\Models\Doctor; use Fastleo\Fields\Text; use Fastleo\Fields\Toggle; use Fastleo\Resource; final class DoctorResource extends Resource { protected static string $model = Doctor::class; protected static ?string $label = 'Doctors'; protected static ?string $singular = 'Doctor'; protected static string $icon = 'stethoscope'; public function fields(): array { return [ Text::make('name', 'Name')->required()->searchable()->sortable(), Text::make('specialty', 'Specialty'), Toggle::make('is_active', 'Show on the site'), ]; } }
The section appears in the menu and opens at /fastleo/doctors. The fields must be in the model's $fillable.
Check the result with php artisan fastleo:doctor — it reports mistakes in sections and site setup (commands). Without a Policy on the model, any admin has full access to the section (authorization).
Documentation
Reading order with short descriptions (in Russian): docs/README.md. Practical answers with code: FAQ.
- Installation and upgrading
- Configuration:
config/fastleo.php - Sections (resources)
- Fields
- Form layout
- Validation
- Dashboard and widgets
- Report pages: filters and widgets
- Recipes: clients, leads, managers
- Record list and filters
- Related tables on a record page
- Actions
- Export and import
- Page builder
- Translatable fields
- Authorization
- Login, profile, password reset
- Activity log
- Site settings
- Closing the site for visitors
- Custom pages and the error log
- Notifications: bell, Telegram and Max
- Publishing to Telegram and Max
- SoftNetica connection
- SEO and sitemap
- Files and images
- Theming and custom templates
- Security
- Testing your sections
- Working with Claude
- Upgrading from 2.x and 3.0
- Moving from another admin panel
- Package development
License
MIT. Icons — Lucide (ISC).