Team Guard by Momin Al Zaraa
CommunityEnhanced Laravel starter kit built with Filament—team management, auth, 2FA, passkeys, session management, and API tokens—inspired by Laravel Jetstream.
Author:
Momin Al Zaraa
Package health
Automated checks of this plugin's Composer package
15 checks
- Passed: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Passed: Dependabot or Renovate configured
- Passed: Dependency update cooldown configured
- Passed: Provides a security policy
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 0 days ago; last release 37 days ago.
-
Failed:
composer.lock not committed by library
—
composer.lockis present in the released dist archive. View details on Plumb - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.3supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
- Installation
- Features
- Enhanced vs stephenjude/filament-jetstream
- Customization
- Configuration (snippets)
- Existing Laravel projects
- Package development
- Testing · Changelog · Contributing
- Credits

Requirements: PHP ^8.3 | ^8.4 | ^8.5 · Laravel ^12.0 · Filament ^5.0 (Livewire ^4.0, Tailwind ^4.0)
Enhanced Laravel starter kit built with Filament, inspired by Laravel Jetstream (discontinued). Brings team features, mature data handling, and Filament UI—auth, registration, 2FA, passkeys, session management, API tokens, teams. Skip boilerplate, start building.
Supported: PHP ^8.3–^8.5, Filament ^5.0, Laravel ^12.0, Livewire ^4.0, Tailwind ^4.0 · Deprecated: PHP <8.3, Filament v4 (use v1.x), Laravel <12.
#Installation
composer require mominalzaraa/filament-team-guard
php artisan filament-team-guard:install --teams --api
Omit --teams / --api if not needed. Action classes and email templates are published for customization.
#Features
- Auth — Login, register, password reset, email verification
- Profile — Photo, info, password, sessions, delete account
- 2FA & passkeys — Embedded TOTP, recovery codes, Spatie Laravel Passkeys. Enable via
->twoFactorAuthentication(). - Cloudflare Turnstile — Optional
->turnstile()on auth + 2FA challenge/recovery. njoguamos/laravel-turnstile; setTURNSTILE_*in.env, runphp artisan turnstile:install. - Teams — Create, invite, roles, member management (add/remove/update role)
- API tokens — Optional Sanctum-style tokens
- i18n — Publishable locale-first language files
#Enhanced vs stephenjude/filament-jetstream
- Publishable Action classes (Jetstream pattern):
UpdateUserProfileInformation,InviteTeamMember,AddTeamMember,RemoveTeamMember,UpdateTeamMemberRole,CreateTeam,UpdateTeamName,DeleteTeam,ValidateTeamDeletion,DeleteUser— all with contracts. - Email invitations — Registered/unregistered flow; “Create Account” when needed; session-based redirects; no auto-registration.
- Profile fields — Override
getFieldComponents(),getSectionHeading(),getSectionDescription()in published Action; add translations inlang/{locale}/filament-team-guard.php. - Team management — Custom
Rolerule,UpdateTeamMemberRole,RemoveTeamMember,ValidateTeamDeletion. - Publishable — Actions, emails, lang; locale-first translations with merge/override.
#Customization
| What | Command |
|---|---|
| Action classes | php artisan vendor:publish --tag=filament-team-guard-actions |
| Language files | php artisan vendor:publish --tag=filament-team-guard-lang |
| Email templates | php artisan vendor:publish --tag=filament-team-guard-email-templates |
Profile field example: Publish actions + lang → add key in lang/en/filament-team-guard.php → in UpdateUserProfileInformation override getFieldComponents() and add a TextInput::make('surname') (and translation) → add surname to User $fillable.
#Configuration (snippets)
Profile (2FA, passkeys, photo, etc.)
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(),
);
Teams
JetstreamPlugin::make()
->teams(condition: fn() => Feature::active('teams'), acceptTeamInvitation: fn($id) => JetstreamPlugin::make()->defaultAcceptTeamInvitation())
->configureTeamModels(teamModel: Team::class, roleModel: Role::class, membershipModel: Membership::class, teamInvitationModel: TeamInvitation::class);
API tokens
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
- Profile:
php artisan vendor:publish --tag=filament-team-guard-migrations --tag=passkeys-migrations→ addInteractsWithProfile,HasProfilePhoto, implementHasAvatar&HasPasskeyson User; hide 2FA fields; appendprofile_photo_url. - Teams:
php artisan vendor:publish --tag=filament-team-guard-team-migration→ addInteractsWithTeams, implementHasTenantson User. - API: Same team migration tag → add
HasApiTokenson User.
#Package development
Run composer install in the package root for tests. vendor/ is in .gitignore and not distributed; composer require mominalzaraa/filament-team-guard in an app only pulls package source—the app’s Composer resolves Filament once (no duplication). .gitattributes has /vendor export-ignore.
#Testing · Changelog · Contributing
- Tests:
composer test - Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
#Credits
- Laravel Jetstream (discontinued) — team features & Action pattern
- stephenjude/filament-jetstream — Filament port
- Momin Al Zaraa — this enhanced version · Issues · [email protected]
License: MIT. See LICENSE.md.
The author
From the same author
Localization
Automatically scan and localize Filament resources with structured translation files. This package eliminates the repetitive task of manually adding translation keys to every field, column, action, and component in your Filament application.
Author:
Momin Al Zaraa
Composer Release Notifier
Filament plugin that compares composer.json / composer.lock packages with GitHub releases, caches results, and optionally emails a summary report.
Author:
Momin Al Zaraa
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle
Compact Theme
A theme that makes data-heavy panels easier to scan by fitting more useful information on each screen.
Filament