A production-ready Laravel application template featuring teams, custom roles & permissions, audit logging, and more. Built as a self-contained Jetstream successor with everything you need out of the box.
Afterburner Jetstream is a complete Laravel application starter template that provides a powerful multi-tenancy foundation. This template includes everything you need to build team-based applications: authentication, team management, custom roles and permissions, audit logging, team announcements, and more.
Built as a self-contained successor to Laravel Jetstream, Afterburner vendors all necessary functionality directly into your application, giving you complete control without external dependencies. Perfect for SaaS applications, team collaboration tools, or any multi-tenant application requiring fine-grained access control.
-
Fortify-based Authentication - Complete login, registration, and password reset system
-
Email Verification - Built-in email verification workflow
-
Two-Factor Authentication (2FA) - TOTP-based two-factor authentication
-
WebAuthn/Biometric Authentication - Passwordless authentication via WebAuthn
-
Session Management - Secure session handling with device management
-
API Tokens - Sanctum-powered API token authentication
-
Team/Organization Management - Full CRUD operations for teams
-
Team Switching - Users can belong to multiple teams and switch between them
-
Team Invitations - Email-based invitation system with expiration
-
Team Branding - Customizable branding per team (logos, colors, etc.)
-
Team Timezone Management - Per-team timezone configuration
-
Personal Teams - Optional personal team feature (configurable)
-
Custom Roles System - Flexible role management with hierarchy
-
Permission Management - Fine-grained permission system
-
Default Role Assignment - Automatic role assignment for new team members
-
Role Templates - Pre-configured role templates (team, company, strata, organization)
-
Member Limits - Configurable member limits per role
-
Role Hierarchy - Hierarchical role system for permission inheritance
-
Team Announcements - Publishable announcements per team
-
Scheduled publishing
-
Email notifications
-
Role-based targeting
-
Read/unread tracking
-
-
Team Members Management - Add, remove, and update team members
-
Member Roles - Assign multiple roles to team members
-
Comprehensive Audit Logging - Track all user actions and model changes
-
Audit Categories - Organized audit logs by category
-
Impersonation Tracking - Track when admins impersonate users
-
Audit Archiving - Archive or export old audit logs
-
Model Change Tracking - Automatic tracking of model changes
-
Request ID Tracking - Track requests across audit logs
-
Runtime Feature Toggles - Database-driven feature flags
-
Config-Based Defaults - Fallback to config for deployment-time defaults
-
Hybrid Approach - Runtime overrides with config fallbacks
-
Profile Management - Update name, email, password
-
Profile Photos - Upload and manage profile photos
-
Timezone Preferences - User-level timezone settings
-
Account Deletion - User-initiated account deletion
-
System Admin - System administrator functionality with impersonation
-
Livewire 3 - Modern reactive UI components
-
Tailwind CSS - Utility-first CSS framework
-
Vite - Next-generation frontend build tool
-
Alpine.js - Lightweight JavaScript framework
-
Responsive Design - Mobile-first responsive layouts
-
Terms & Privacy Policy - Accept terms and privacy policy on registration
-
Email Notifications - Team invitations, announcements, and more
-
Flash Messages - Banner-style flash notifications
-
User Agent Detection - Enhanced browser and platform detection
-
Queued Jobs - Background job processing for audit logging
-
Full Laravel Application - Complete Laravel installation ready to use
-
No External Dependencies - Jetstream functionality vendorized
-
Standard Laravel Structure - Follows Laravel conventions throughout
-
Artisan Commands - Helpful commands for common tasks
-
Comprehensive Events - Event-driven architecture
-
Service Providers - Well-organized service provider structure
# Install globally
composer global require laravel-afterburner/installer
# Create new project
afterburner new my-projectcomposer create-project laravel-afterburner/jetstream my-project
cd my-projectAfter installation, you'll need to:
- Copy
.env.exampleto.envand configure your environment - Run migrations:
php artisan migrate - Seed roles (optional):
php artisan db:seed --class=RolesSeeder
-
PHP ^8.2
-
Laravel ^11.0
-
Composer
Afterburner uses the following environment variables (see stubs/.env.example for details):
AFTERBURNER_ENTITY_LABEL- Label for teams/organizations (default:organization)AFTERBURNER_APP_TYPE- Application type (default:Management App)AFTERBURNER_GUARD- Authentication guard (default:sanctum)AFTERBURNER_PROFILE_PHOTO_DISK- Profile photo storage disk (default:public)
Main configuration is in config/afterburner.php. This file controls:
- Entity label and application naming
- Feature flags (including email verification from Laravel Fortify)
- Feature options (e.g., 2FA configuration)
- Authentication settings
- Profile photo storage
Most features are managed in config/afterburner.php, including all Afterburner-specific features and email verification from Laravel Fortify. Other Fortify authentication features (registration, password reset, etc.) are configured in config/fortify.php.
This approach provides:
- Unified control for Afterburner and email verification features
- Consistent runtime toggling via the database for managed features
- Standard Laravel Fortify configuration for other authentication features
Feature flags can be managed in two ways:
- Config File (
config/afterburner.php) - Deployment-time defaults - Database (
feature_flagstable) - Runtime overrides
The Features class provides a unified interface:
use App\Support\Features;
// Afterburner features
if (Features::hasTeamFeatures()) {
// Team features are enabled
}
if (Features::hasPersonalTeams()) {
// Personal teams feature is enabled
}
// Email verification (managed through Afterburner)
if (Features::hasEmailVerification()) {
// Email verification is required
}Note: Email verification is controlled through Afterburner config and can be toggled at runtime via the feature_flags table. Other Fortify features (registration, password reset, update profile, update passwords) are configured directly in config/fortify.php.
The template includes a complete User model with all necessary traits:
HasAfterburnerRoles- Role and permission managementHasTeams- Team membership and switchingHasPermissions- Permission checkingHasProfilePhoto- Profile photo managementHasApiTokens- API token managementTwoFactorAuthenticatable- 2FA supportWebAuthnAuthentication- Biometric authentication
The template includes a default role system that automatically assigns roles to users:
- Default Roles: Identified by
is_default => truein therolestable - Automatic Assignment: Default role is assigned when:
- A user registers and a team is created
- A user is added to a team
- A user accepts a team invitation
- A user creates a new team
To set up roles, create a RolesSeeder:
// database/seeders/RolesSeeder.php
public function run(): void
{
Role::create([
'name' => 'Member',
'slug' => 'member',
'description' => 'Default team member role',
'is_default' => true,
'hierarchy' => 100,
'badge_color' => 'gray',
'max_members' => null,
]);
}Then run: php artisan db:seed --class=RolesSeeder
Afterburner provides several Artisan commands:
afterburner:install- Install add-ons into an existing projectafterburner:publish- Publish all Afterburner assets (config, migrations, views)
All feature flag commands support the --disabled flag to disable features, and --force to skip confirmation prompts. By default, commands enable the feature.
afterburner:api- Enable/disable API featureafterburner:account-deletion- Enable/disable account deletion featureafterburner:biometric- Enable/disable biometric authentication (WebAuthn) featureafterburner:personal-teams- Enable/disable personal teams featureafterburner:profile-photos- Enable/disable profile photos featureafterburner:team-announcements- Enable/disable team announcements featureafterburner:teams- Enable/disable teams featureafterburner:terms-and-privacy-policy- Enable/disable terms and privacy policy featureafterburner:timezone- Enable/disable timezone management featureafterburner:two-factor-authentication- Enable/disable two-factor authentication feature
afterburner:audit-archive- Archive or delete old audit logs
Run the test suite:
php artisan testThe template includes comprehensive tests for:
- Team creation and management
- Role and permission system
- User model functionality
- Authentication flows
- API tokens
- Feature flags
- Artisan commands
This template follows Laravel conventions:
- Namespace:
App\(standard Laravel project structure) - Type:
project(full Laravel application template) - No Jetstream dependency: All Jetstream features are vendorized
The template includes several utility classes in App\Support:
Agent- User agent detectionAfterburner- Facade-like class for Afterburner functionalityFeatures- Feature flag managementOwnerRole- Helper class for owner roleRole- Support class for role definitions
Full documentation is available in the docs directory of this repository. The documentation includes:
-
And more...
Start with the Installation Guide to get up and running quickly.
MIT License - see LICENSE file for details.
- GitHub Issues: laravel-afterburner/jetstream/issues
Afterburner is designed to be extensible. Check out our add-on packages:
-
Subscriptions - Stripe subscription management
-
Documents - Document management (coming soon)
-
Communications - Enhanced communications (coming soon)
-
Voting - Polls and voting system (coming soon)
-
Meetings - Meeting management (coming soon)
Install add-ons via Composer:
composer require laravel-afterburner/subscriptions
php artisan afterburner:subscriptions:installContributions are welcome! Please see CONTRIBUTING.md for details.
Afterburner is built on the foundation of Laravel, created by Taylor Otwell. Taylor's contributions to the PHP development community have revolutionized how we build web applications, and his work has profoundly impacted countless developers worldwide—myself included.
This project is inspired by Laravel Jetstream's architecture and user experience, but is implemented as a completely independent, self-contained solution. Afterburner vendors all necessary functionality directly into your application, giving you full control without external dependencies.
Thank you, Taylor, for creating Laravel and the entire ecosystem that makes projects like this possible.