stephenjude / filament-jetstream
A Laravel starter kit built with Filament inspired by Jetstream.
Fund package maintenance!
stephenjude
Installs: 45 041
Dependents: 1
Suggesters: 0
Security: 0
Stars: 159
Watchers: 4
Forks: 25
Open Issues: 1
Requires
- php: ^8.3
- filament/filament: ^4.0
- illuminate/contracts: ^12.0
- mobiledetect/mobiledetectlib: ^4.8
- spatie/laravel-package-tools: ^1.15.0
- stephenjude/filament-two-factor-authentication: ^3.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Filament Jetstream, just like Laravel Jetstream is a beautifully designed application starter kit for Laravel and provides the perfect starting point for your next Laravel application.
Includes auth, registration, 2FA, session management, API tokens, and team support, all implemented with native Filament panels and components.
Skip boilerplate, start building features.
Installation
You can install the package via composer:
composer require stephenjude/filament-jetstream php artisan filament-jetstream:install --teams --api
You can remove the --teams
and --api
arguments if you don't want those features.
Features
🔐 Authentication
👤 User Profile
👥 Team (Optional)
🔑 API Tokens (Optional)
🌍 Translation-ready
Usage & Configurations
Configuring the User Profile
use \App\Models\User; use Filament\Jetstream\JetstreamPlugin; use Illuminate\Validation\Rules\Password; ... ->plugins([ ... JetstreamPlugin::make() ->configureUserModel(userModel: User::class) ->profilePhoto(condition: fn() => true, disk: 'public') ->deleteAccount(condition: fn() => true) ->updatePassword(condition: fn() => true, Password::default()) ->profileInformation(condition: fn() => true) ->logoutBrowserSessions(condition: fn() => true) ->twoFactorAuthentication( condition: fn() => auth()->check(), forced: fn() => app()->isProduction(), enablePasskey: fn() => Feature::active('passkey'), requiresPassword: fn() => app()->isProduction(), ), ])
Configuring Team features
use \Filament\Jetstream\Role; use Filament\Jetstream\JetstreamPlugin; use Illuminate\Validation\Rules\Password; use \Filament\Jetstream\Models\{Team,Membership,TeamInvitation}; ... ->plugins([ ... JetstreamPlugin::make() ->teams( condition: fn() => Feature::active('teams'), acceptTeamInvitation: fn($invitationId) => JetstreamPlugin::make()->defaultAcceptTeamInvitation() ) ->configureTeamModels( teamModel: Team::class, roleModel: Role::class, membershipModel: Membership::class, teamInvitationModel: TeamInvitation::class ), ])
Configuring API features
use Filament\Jetstream\JetstreamPlugin; use Illuminate\Validation\Rules\Password; use \Filament\Jetstream\Role; use \Filament\Jetstream\Models\{Team, Membership, TeamInvitation}; ... ->plugins([ ... JetstreamPlugin::make() ->apiTokens( condition: fn() => Feature::active('api'), permissions: fn() => ['create', 'read', 'update', 'delete'], menuItemLabel: fn() => 'API Tokens', menuItemIcon: fn() => 'heroicon-o-key', ), ])
Existing Laravel projects
Installing the Profile feature
Publish profile migrations
Run the following command to publish the profile migrations.
php artisan vendor:publish \ --tag=filament-jetstream-migrations \ --tag=passkeys-migrations \ --tag=filament-two-factor-authentication-migrations
Add profile feature traits to the User model
Update the App\Models\User
model:
... use Filament\Jetstream\HasProfilePhoto; use Filament\Models\Contracts\HasAvatar; use Spatie\LaravelPasskeys\Models\Concerns\HasPasskeys; use \Filament\Jetstream\InteractsWIthProfile; class User extends Authenticatable implements HasAvatar, HasPasskeys { ... use InteractsWIthProfile; protected $hidden = [ ... 'two_factor_recovery_codes', 'two_factor_secret', ]; protected $appends = [ ... 'profile_photo_url', ]; }
Installing the Team Features
Publish team migration
Run the following command to publish the team migrations.
php artisan vendor:publish --tag=filament-jetstream-team-migration
Add team feature traits to User model
Update App\Models\User
model to implement 'Filament\Models\Contracts\HasTenants' and use Filament\Jetstream\InteractsWithTeams
trait.
... use Filament\Jetstream\InteractsWithTeams; use Filament\Models\Contracts\HasTenants; class User extends Authenticatable implements HasTenants { ... use InteractsWithTeams; }
Installing the API Features
Publish team migration
Run the following command to publish the team migrations.
php artisan vendor:publish --tag=filament-jetstream-team-migration
Add api feature trait to User model
Update App\Models\User
model to use Laravel\Sanctum\HasApiTokens
trait.
... use \Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens; }
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.