jeffersongoncalves/filakitv5
Filakit v5 is a Laravel package that provides a ready-to-use Filament v5 admin panel kit, including authentication and common scaffolding to help you quickly build and customize back-office applications.
The package is a Filament v5 starter kit (jeffersongoncalves/filakitv5), so the fastest path is to install it as the base of a fresh app rather than bolting it onto an existing admin panel:
composer require jeffersongoncalves/filakitv5
php artisan filakit:install # publishes config, migrations, assets
php artisan migrate
Then log in at /admin with the seeded admin user and confirm the panel boots before writing any code.
Look at these first, in order:
config/filakit.php (or the published panel provider) — panel path, guards, branding.app/Filament/ tree for your own Resources/Pages/Widgets — this is where day-to-day work happens.User/Admin models now ship from split packages, so that is where you go when you need to change login behaviour or extend the model.First real use case: scaffold one Resource for the domain entity you care about (php artisan make:filament-resource Post --generate) and wire it to the panel. If that round-trips (list, create, edit, delete, authorisation) you know the install, the guards and the asset pipeline are all healthy.
Build on top of the shipped resources, don't fork them. Keep your domain Resources in app/Filament/Resources and use the package's resources as reference implementations. If you need a tweak, subclass the resource or override the form/table schema in your own class — never edit vendor/.
Separate the user and admin panels deliberately. The 5.10.1 change to "use user/admin packages for models, resources and login" means the two audiences are intentionally split. Pick a side per feature and stay there: front-of-house auth flows belong to the user package, back-office CRUD to the admin one. Mixing guards in a single Resource is where teams get User vs Admin type errors and 403s on login redirects.
Filament v5 schema composition. Forms and infolists are now built on Filament\Schemas\Schema. A typical resource form:
use Filament\Schemas\Schema;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Select;
public static function form(Schema $schema): Schema
{
return $schema->components([
TextInput::make('title')->required()->maxLength(255),
Select::make('author_id')
->relationship('author', 'name')
->searchable()
->preload(),
]);
}
Authorisation via policies, not conditionals. Create a policy per model and let Filament call viewAny, create, etc. Use ->visible(fn () => auth()->user()->isAdmin()) only for UI polish, never as the security boundary.
Widgets and dashboards. Register dashboard widgets in the panel provider's ->widgets([...]) and keep expensive queries behind ->pollingInterval(null) unless you actually want live data.
Roles and permissions. Wrap role assignment in seeders so a fresh migrate --seed reproduces a working admin. This is the single most common onboarding friction point on starter kits.
user/admin packages rather than app/Models. If an upgrade suddenly breaks use App\Models\User; imports or your login redirect, check the package namespace first — that is the highest-impact change in this release.Forms/Tables namespace moves before upgrading a large codebase.pnpm-workspace.yaml and patches shell-quote and source-map-js. If you run a custom Vite build against the package's assets, keep your pnpm version aligned and re-run pnpm install && pnpm build after upgrading — stale lockfiles are the usual cause of "works locally, blank panel in CI".php artisan filament:assets
php artisan optimize:clear
A white screen or missing styles after a version bump is almost always a stale published asset or a cached config, not a code bug.php artisan about plus a dd(auth()->guard('admin')->user()) in the panel middleware quickly tells you whether you are on the wrong guard. Filament 403s are rarely about the Resource and usually about the guard/policy pair.Resource base classes, and Filament's ->authorize() / policy hooks. Prefer these over patching vendor code so future dependabot-driven bumps stay painless.composer.json/package.json constraints and let the package move; don't chase every patch release unless it touches Filament's minor version or the user/admin package split.How can I help you explore Laravel packages today?