view('landing'))->name('home'); // Public legal pages (placeholders — replace with real content before launch). Route::prefix('legal')->name('legal.')->group(function () { Route::get('/impressum', fn () => view('legal', ['title' => 'Impressum']))->name('impressum'); Route::get('/datenschutz', fn () => view('legal', ['title' => 'Datenschutz']))->name('datenschutz'); Route::get('/agb', fn () => view('legal', ['title' => 'AGB']))->name('agb'); Route::get('/status', fn () => view('legal', ['title' => 'Status']))->name('status'); }); // Guest auth pages — full-page class-based Livewire components (R1/R2). Fortify // handles the POST actions (login.store, two-factor.login.store) with views off. Route::middleware('guest')->group(function () { Route::get('/login', Login::class)->name('login'); Route::get('/two-factor-challenge', TwoFactorChallenge::class)->name('two-factor.login'); }); // Customer portal — each sidebar tab is a full-page class-based Livewire // component (R1/R2); paths are English (R13). Route::middleware('auth')->group(function () { Route::get('/dashboard', Dashboard::class)->name('dashboard'); Route::get('/cloud', Cloud::class)->name('cloud'); Route::get('/users', Users::class)->name('users'); Route::get('/backups', Backups::class)->name('backups'); Route::get('/invoices', Invoices::class)->name('invoices'); Route::get('/support', Support::class)->name('support'); }); // Admin / operator console — dark theme, gated to is_admin users (R1/R2, R13). Route::middleware(['auth', 'admin'])->prefix('admin')->name('admin.')->group(function () { Route::get('/', Admin\Overview::class)->name('overview'); Route::get('/customers', Admin\Customers::class)->name('customers'); Route::get('/instances', Admin\Instances::class)->name('instances'); Route::get('/hosts', Admin\Hosts::class)->name('hosts'); Route::get('/hosts/create', Admin\HostCreate::class)->name('hosts.create'); Route::get('/hosts/{host}', Admin\HostDetail::class)->name('hosts.show'); Route::get('/provisioning', Admin\Provisioning::class)->name('provisioning'); Route::get('/revenue', Admin\Revenue::class)->name('revenue'); });