filament-saas-panel
Ready to use SaaS panel with integration of Filament Accounts Builder and JetStream teams
Extends filament
composer require tomatophp/filament-saas-panelReadme

Filament SaaS Panel
Ready to use SaaS panel for your customers with Jetstream teams: registration with OTP, team management and invitations, profile, browser sessions and API tokens. Works with your own User model (Filament Accounts is optional).
Features
- Login Page
- Register with OTP
- Login Check if Account Active or Blocked
- Create Team Page
- Edit Team Page
- Team Members List
- Team Invitation
- Delete Team
- Edit Profile
- Change Profile Password
- Browser Session Manager
- Delete Account
- API Tokens
- Team Resource
- Integration With Filament Social Login
- Integration With Filament Two Factory Authentication
- Integration With Wave Themes/Plugins
Screenshots

Compatibility
| Package | Filament | Laravel | PHP |
|---|---|---|---|
| 5.x | 5.x | 12.x / 13.x | 8.3+ |
| 4.x | 4.x | 11.x / 12.x | 8.2+ |
Requirements
The SaaS panel is built on Laravel Jetstream teams and Laravel Sanctum. Both are installed with the package; you do not need to run php artisan jetstream:install.
Filament Accounts is not required. By default the panel works with your App\Models\User on the users table and the web guard; if your users live somewhere else (for example a Filament Accounts accounts table and guard) change user_model, user_table, team_id_column and auth_guard in the config (see Config).
Before installing, make sure your app has:
- a Filament panel for your customers, separate from your admin panel
- the Spatie media library
mediatable (team and profile avatars). The package creates it when it is missing, so do not publish the media library migration again afterwards (a secondcreate_media_tablemigration fails withtable media already existson a fresh database). If you want to publish it yourself, do it before installing this package:
- the
sessionstable when you use the browser sessions manager (SESSION_DRIVER=database, the Laravel default)
Installation
publish the team migrations (teams, team_user, team_invitations and the current_team_id / profile_photo_path columns on your user table). They use the configured user table, users by default, and skip tables and columns that already exist, so they are safe on an app that already has Jetstream teams.
publish the team models to app/Models (Team, TeamInvitation, Membership)
then run the install command, it runs the migrations (team tables, Sanctum personal_access_tokens, OTP columns)
now prepare your user model: add the InteractsWithTenant trait (Jetstream teams, Sanctum tokens, profile photo, media) and the Filament contracts
InteractsWithTenant::canAccessPanel() allows every panel; override it in your model to keep customers out of your admin panel.
finally register the plugin on /app/Providers/Filament/AppPanelProvider.php
on your admin panel provider if you like to have Team resource and features register this
Upgrading from 1.x / 4.x: the panel no longer needs Filament Accounts. If you saw
Route [filament.admin.resources.accounts.index] not definedorno such table: accounts, publish the config and pointuser_model/user_tableat the model and table you really use.
Config
Change Panel ID
if you like to change the panel name on your config just change id and name on config/filament-saas-panel.php
you can publish it from this command
Custom Pages
you can change any page you want on the panel using the config like this
Publish Assets
you can publish config file by use this command
you can publish views file by use this command
you can publish languages file by use this command
you can publish migrations file by use this command
Testing
if you like to run PEST testing just use this command
Code Style
if you like to fix the code style just use this command
PHPStan
if you like to check the code by PHPStan just use this command
Other Filament Packages
Checkout our Awesome TomatoPHP