Google Ad

When setting up a new Laravel application, especially one that integrates Jetstream for authentication and Filament for admin panels, developers often run into dependency errors. These errors usually stem from running package installs out of sequence or forgetting that each package ships its own migrations. The result? Undefined constants, missing tables, or broken providers make the development process take longer than it should.

Understanding the correct order of installation and migration is crucial. Laravel’s ecosystem is modular, but its packages depend on certain tables being present before they can hook into the application. Jetstream needs the users table, Filament expects authentication scaffolding, and Spatie Permissions requires a stable user model. If migrations are skipped or delayed, the build collapses for reasons that can easily be fixed. Thus our recommendation is to follow these simple steps to be up and running in less than


The Streamlined MVP Build Sequence

Step 1 – Install Laravel

composer create-project laravel/laravel app-name
cd app-name

Step 2 – Configure Database

Force InnoDB in config/database.php:

'engine' => 'InnoDB',

This ensures foreign keys work properly and eliminates some common migration errors.

Step 3 – Run Initial Laravel Migrations

php artisan migrate

This sets up the basic db requirements

Step 4 – Install Jetstream (with Teams)

composer require laravel/jetstream
php artisan jetstream:install livewire --teams

Jetstream scaffolds authentication, teams, and session management.

Step 5 – Install Filament

composer require filament/filament
php artisan filament:install --panels

This add Filament and admin panel scaffolding.

Step 6 – Publish Filament Config

php artisan vendor:publish --tag=filament-config

This creates config/filament.php for customizing defaults.

Step 7 – Create Filament Admin User

php artisan make:filament-user

Step 8 – Install Spatie Permissions

composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

Spatie adds role and permission migrations automatically.

Step 9 – Run Spatie Migrations

php artisan migrate

This sets up the Spatie db requirements

Step 10 – Configure Mail

Use log for development, SMTP for production:

MAIL_MAILER=log
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="App Name"

MAIL_MAILER=smtp
MAIL_HOST=mail.ebdhosting.com
MAIL_PORT=465
MAIL_USERNAME=apps@ebdhosting.com
MAIL_PASSWORD=your_password_here
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=apps@ebdhosting.com
MAIL_FROM_NAME="App Name"

Step 11 – Clear Caches

php artisan config:clear
php artisan cache:clear

Step 12 – Compile Assets

npm install && npm run dev

Step 13 – Start Dev Server (Separate Terminal)

php artisan serve

Key Insights

  • Only one manual migration run is needed at the start. After that, Jetstream, Filament, and Spatie each include their own migrations during install.
  • Order is critical. Jetstream before Filament, because Filament expects the users table to exist. Spatie comes last, since it attaches roles and permissions to the user model.
  • Publishing configs matters. Filament’s config file (config/filament.php) lets you override defaults and keep your admin panel aligned with project needs.
  • InnoDB is non‑negotiable. Without it, foreign key constraints break, and migrations fail.

Conclusion

By respecting the sequence — Laravel migrate → Jetstream install → Filament install → Spatie install — you avoid the common pitfalls of undefined constants and missing tables. This streamlined approach ensures your MVP is stable, modular, and ready for rapid iteration.

Google Ad

Leave a Reply

Your email address will not be published. Required fields are marked *