Laravel: Should I use Breeze or Jetstream? And what’s Nova?
Both Laravel Breeze and Laravel Jetstream are officially maintained packages by Laravel for scaffolding out authentication systems. While they might seem similar at a first glance, they serve slightly different purposes and come with their own sets of features. Let’s dive into the differences:
Laravel Breeze
Primary Purpose: Breeze offers a minimal starting point for building a Laravel application with authentication.
Features:
- Authentication (Login, Registration, Password Reset)
- Basic Blade views styled with Tailwind CSS.
- Option to choose between Livewire or Inertia scaffolding.
- Option to use Vue or React with the Inertia-based scaffolding.
When to Choose Breeze:
- When you need a basic authentication system without the bells and whistles.
- When you prefer a simpler foundation that you can expand upon.
- When you don’t need advanced features like API authentication, two-factor authentication, or team management out-of-the-box.
Real-world Example: Imagine building a simple blog or portfolio website. You just need basic authentication for the admin to log in and manage content. Breeze is an excellent choice here because it provides just what you need without over-complicating things.
Laravel Jetstream
Primary Purpose: Jetstream provides a robust starting point for building Laravel applications with modern features.
Features:
- Authentication (Login, Registration, Password Reset, Email Verification)
- Two-Factor Authentication (actually implemented on user’s profile page and ready to use)
- Session Management (view and terminate user sessions in user’s profile page)
- API authentication via Laravel Sanctum
- Optional Team Management Features (create teams, invite users to teams, manage team roles, etc.)
- Tailwind CSS styling
- Choice between Livewire or Inertia+Vue scaffolding
When to Choose Jetstream:
- When you’re building a more complex application that will be used by many users.
- When you need built-in support for managing teams.
- When you’re building a Single Page Application (SPA) with Vue and Inertia.
- When you’d like a more comprehensive foundation that you can build upon.
Real-world Example: Consider building a SaaS (Software-as-a-Service) application where users can register, create teams, collaborate on projects, and use your API. Jetstream is designed for this kind of complex application. It provides team management, API tokens, and more, right out of the box.
Laravel Nova
Laravel Nova is advertised as an admin panel for Laravel applications, created by the Laravel team itself. It’s designed for ease of use to allow developers to create a ready-to-use admin panel for their application’s back-end in a very short time. Unlike Laravel Breeze and Jetstream, Nova is a paid product, and it focuses on administrative tasks.
However, many people have built SaaS applications using Nova, so it’s worth exploring how it fits into the picture.
Here’s how Nova fits in and how it can work with Breeze or Jetstream:
Primary Purpose: Nova is an admin panel, not a scaffolding for your entire application. It’s designed to manage the underlying data of your application with a beautiful UI, without requiring you to design the admin panel from scratch.
Features:
- Resource Management: Easily perform CRUD operations on Laravel models.
- Actions: Perform custom tasks on resources.
- Filters: Customize your views of resources.
- Lenses: Get an alternative view of a resource.
- Metrics: See custom metrics for your application.
- Custom fields and tools.
- Uses Inertia.js and Vue.js.
When to Use Nova:
- When you need an elegant and advanced admin panel for your site admins or staff to interact with the app’s data.
- When you want to speed up development by not spending too much time building an admin panel.
Nova in a SaaS Application:
If you’re building a SaaS application and using Nova for the admin side, you would generally pair Nova with Breeze or Jetstream for the customer-facing authentication and user functionality.
Note on User Profiles: Nova doesn’t come with a built-in user profile page. If you need such a feature, you’d have to build it yourself or use the features provided by Jetstream or Breeze for the user front-end.