route('dashboard'); }); // Onboarding routes (protected by auth, but need incomplete onboarding) Route::middleware(['auth', 'onboarding.incomplete'])->group(function () { Route::get('/onboarding', Onboarding::class)->name('onboarding'); }); // Main app routes (protected by auth and require completed onboarding) Route::middleware(['auth', 'onboarding.complete'])->group(function () { Route::get('/dashboard', Dashboard::class)->name('dashboard'); Route::get('/articles', Articles::class)->name('articles'); Route::get('/feeds', Feeds::class)->name('feeds'); Route::get('/channels', Channels::class)->name('channels'); Route::get('/routes', Routes::class)->name('routes'); Route::get('/settings', Settings::class)->name('settings'); }); // Profile routes (auth protected, no onboarding check needed) Route::middleware('auth')->group(function () { Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); require __DIR__.'/auth.php'; Route::get('/health', function () { return response()->json(['status' => 'ok']); }); Route::fallback(function () { return response()->json([ 'message' => 'This is the FFR API backend. Use /api/v1/* endpoints or check the React frontend.', 'api_base' => '/api/v1', ], 404); });