name('caddy.ask'); // Home — if Host matches a verified custom_domain, render the status page; // otherwise show the welcome page. Route::get('/', function (\Illuminate\Http\Request $request) { $host = strtolower($request->getHost()); if (\App\Models\StatusPage::where('custom_domain', $host)->whereNotNull('domain_verified_at')->exists()) { return app(PublicStatusPageController::class)->showByDomain($request); } return view('welcome'); })->name('home'); // Public status page (unauthenticated, slug-based) Route::get('/status/{slug}', [PublicStatusPageController::class, 'show'])->name('public.status'); Route::get('dashboard', Dashboard::class) ->middleware(['auth', 'verified']) ->name('dashboard'); Route::middleware(['auth'])->group(function () { // App-level health dashboard (DB, Redis, monitoring loop, probes). // Returns JSON if the client asks for it, rich HTML for browsers. Route::get('/healthz', HealthController::class)->name('healthz'); Route::redirect('settings', 'settings/profile'); Route::get('settings/profile', Profile::class)->name('settings.profile'); Route::get('settings/password', Password::class)->name('settings.password'); Route::get('settings/notifications', SettingsNotifications::class)->name('settings.notifications'); Route::get('settings/appearance', Appearance::class)->name('settings.appearance'); Route::get('settings/two-factor', TwoFactor::class) ->middleware( when( Features::canManageTwoFactorAuthentication() && Features::optionEnabled(Features::twoFactorAuthentication(), 'confirmPassword'), ['password.confirm'], [], ), ) ->name('two-factor.show'); Route::prefix('teams')->name('teams.')->group(function () { Route::get('/', Index::class)->name('index'); Route::get('/create', Create::class)->name('create'); Route::get('/{team}/edit', Edit::class)->name('edit'); Route::get('/{team}/members', ManageMembers::class)->name('members'); }); Route::prefix('projects')->name('projects.')->group(function () { Route::get('/', ProjectsIndex::class)->name('index'); Route::get('/create', ProjectsCreate::class)->name('create'); Route::get('/{project}', ProjectsShow::class)->name('show'); Route::get('/{project}/edit', ProjectsEdit::class)->name('edit'); }); Route::prefix('status-pages')->name('status-pages.')->group(function () { Route::get('/', StatusPagesIndex::class)->name('index'); Route::get('/create', StatusPagesCreate::class)->name('create'); Route::get('/{statusPage}', StatusPagesManage::class)->name('manage'); Route::get('/{statusPage}/incidents/create', StatusPageIncidentCreate::class)->name('incidents.create'); Route::get('/{statusPage}/incidents/{incident}/edit', StatusPageIncidentEdit::class)->name('incidents.edit'); }); Route::prefix('monitors')->name('monitors.')->group(function () { Route::get('/', MonitorsIndex::class)->name('index'); Route::get('/create', MonitorsCreate::class)->name('create'); Route::get('/{monitor}', MonitorsShow::class)->name('show'); Route::get('/{monitor}/edit', MonitorsEdit::class)->name('edit'); }); }); require __DIR__.'/auth.php';