Installation:
laravel new my-app
composer require clarkeash/turbine
php artisan turbine:install [--teams]
php artisan migrate:fresh
npm run build
php artisan turbine:install without --teams for a basic setup or include it for team support.First Use Case:
/login to test authentication flow./register./dashboard post-login to see the starter dashboard.Where to Look First:
config/turbine.php for customization (e.g., team settings, branding).resources/views for Flux-based UI components (e.g., auth/login.blade.php).app/Http/Livewire for reusable logic (e.g., Auth/Login, Profile/UpdatePassword).routes/web.php for predefined routes (e.g., /dashboard, /profile).Authentication Flow:
Auth/Login Livewire component for login logic.app/Http/Livewire/Auth/Login.php to customize validation or redirect logic.protected function redirectTo(): string
{
return route('dashboard'); // Override default redirect
}
Team Management (if enabled):
Team/InviteUsers Livewire component.Team/UpdateTeam (e.g., team name).Route::middleware(['auth', 'team'])->group(function () {
Route::get('/teams/{team}', [TeamController::class, 'show']);
});
Profile Management:
Profile/UpdateProfile Livewire.Profile/UpdatePassword Livewire.// app/Http/Livewire/Profile/UpdateProfile.php
protected $rules = [
'name' => 'required|string|max:255',
'email' => 'required|email|max:255|unique:users,email,'.$this->user->id,
// Add custom rules (e.g., 'phone' => 'nullable|digits:10')
];
Dashboard Customization:
resources/views/dashboard.blade.php.@livewire('custom.component-name')
Legal Pages:
/privacy and /terms by editing resources/views/legal/privacy.blade.php and terms.blade.php.Flux Pro Components:
<x-flux.button type="primary">Custom Action</x-flux.button>
Middleware:
app/Http/Kernel.php for route protection:
protected $routeMiddleware = [
'team' => \App\Http\Middleware\TeamMiddleware::class,
];
Testing:
$this->actingAs(User::factory()->create());
$this->get('/dashboard')->assertStatus(200);
livewire():
$this->livewire(Auth\Login::class)->set('email', 'test@example.com');
Asset Customization:
php artisan vendor:publish --tag=turbine-assets
resources/css/app.css or resources/js/app.js.Flux Pro Dependency:
Team Middleware Conflicts:
--teams but don’t configure the team middleware correctly, users may access team routes without belonging to a team.app/Http/Middleware/TeamMiddleware.php checks for auth and team_id:
public function handle(Request $request, Closure $next)
{
if (!auth()->check() || !auth()->user()->team_id) {
abort(403);
}
return $next($request);
}
Migration Conflicts:
migrate:fresh after adding custom columns (e.g., phone to users) may fail if the migration order is incorrect.database/migrations/2024_XX_XX_XX_add_custom_columns_to_users_table.php and run them manually:
php artisan migrate --path=database/migrations/2024_XX_XX_XX_add_custom_columns_to_users_table.php
Livewire Component Caching:
app/Http/Livewire/Auth/Login.php) may not reflect immediately due to caching.php artisan livewire:discover
php artisan view:clear
Asset Build Failures:
npm run build may fail if node_modules are corrupted or dependencies are outdated.rm -rf node_modules package-lock.json
npm install
npm run build
Livewire Errors:
storage/logs/livewire.log for component-specific errors.dd() or dump() in Livewire methods to inspect data:
public function updatedEmail()
{
dump($this->email); // Debug input
}
Flux Component Issues:
resources/js/app.js:
import { Button } from '@fluxui/pro';
Route Debugging:
php artisan route:list
| | GET|HEAD | dashboard | App\Http\Controllers\DashboardController@index | web,auth
| | GET|HEAD | login | Livewire|\App\Http\Livewire\Auth\Login | web,guest
Database Debugging:
php artisan tinker
>>> \App\Models\User::with('team')->get();
Custom Livewire Components:
app/Http/Livewire and register them in resources/views/layouts/app.blade.php:
@livewireScripts
@stack('scripts')
app/Http/Livewire/CustomComponent.php:
namespace App\Http\Livewire;
use Livewire\Component;
class CustomComponent extends Component
{
public function render()
{
return view('livewire.custom-component');
}
}
Custom Validation:
app/Providers/AppServiceProvider.php:
use Illuminate\Support\Facades\Validator;
Validator::extend('custom_rule', function ($attribute, $value, $parameters, $validator) {
return $value === 'expected';
});
API Endpoints:
routes/api.php and use Turbine’s auth middleware:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Email Customization:
php artisan vendor:publish --tag=turbine-views
resources/views/vendor/turbine/emails/ (e.g., password-reset.blade.php).Notifications:
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
class
How can I help you explore Laravel packages today?