From 9626bde6946dc6e9438112f0071ac07eb53e6500 Mon Sep 17 00:00:00 2001 From: Marcel Raddatz Date: Thu, 2 Apr 2026 13:22:34 +0200 Subject: [PATCH] feat(shell): add route groups, layout server load, redirect, and placeholder pages - (app) group with AppShell layout, loads user/household from locals - (public) group with full-viewport split layout, /login placeholder - Root / redirects to /planner for authenticated users - Placeholder stubs for planner, recipes, shopping, settings, members Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/lib/nav/AppShell.svelte | 2 +- frontend/src/routes/(app)/+layout.server.ts | 8 ++++++++ frontend/src/routes/(app)/+layout.svelte | 9 +++++++++ frontend/src/routes/(app)/members/+page.svelte | 1 + frontend/src/routes/(app)/planner/+page.svelte | 1 + frontend/src/routes/(app)/recipes/+page.svelte | 1 + frontend/src/routes/(app)/settings/+page.svelte | 1 + frontend/src/routes/(app)/shopping/+page.svelte | 1 + frontend/src/routes/(public)/+layout.svelte | 12 ++++++++++++ frontend/src/routes/(public)/login/+page.svelte | 2 ++ frontend/src/routes/+page.server.ts | 6 ++++++ frontend/src/routes/+page.svelte | 1 + 12 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 frontend/src/routes/(app)/+layout.server.ts create mode 100644 frontend/src/routes/(app)/+layout.svelte create mode 100644 frontend/src/routes/(app)/members/+page.svelte create mode 100644 frontend/src/routes/(app)/planner/+page.svelte create mode 100644 frontend/src/routes/(app)/recipes/+page.svelte create mode 100644 frontend/src/routes/(app)/settings/+page.svelte create mode 100644 frontend/src/routes/(app)/shopping/+page.svelte create mode 100644 frontend/src/routes/(public)/+layout.svelte create mode 100644 frontend/src/routes/(public)/login/+page.svelte create mode 100644 frontend/src/routes/+page.server.ts create mode 100644 frontend/src/routes/+page.svelte diff --git a/frontend/src/lib/nav/AppShell.svelte b/frontend/src/lib/nav/AppShell.svelte index dba02e4..e2c8b21 100644 --- a/frontend/src/lib/nav/AppShell.svelte +++ b/frontend/src/lib/nav/AppShell.svelte @@ -4,7 +4,7 @@ import TabletNavBar from './TabletNavBar.svelte'; import DesktopSidebar from './DesktopSidebar.svelte'; - let { appName, householdName, children }: { appName: string; householdName: string; children: Snippet } = $props(); + let { appName, householdName, children }: { appName: string; householdName: string; children?: Snippet } = $props();
diff --git a/frontend/src/routes/(app)/+layout.server.ts b/frontend/src/routes/(app)/+layout.server.ts new file mode 100644 index 0000000..e64b781 --- /dev/null +++ b/frontend/src/routes/(app)/+layout.server.ts @@ -0,0 +1,8 @@ +import type { LayoutServerLoad } from './$types'; + +export const load: LayoutServerLoad = async ({ locals }) => { + return { + benutzer: locals.benutzer!, + haushalt: locals.haushalt! + }; +}; diff --git a/frontend/src/routes/(app)/+layout.svelte b/frontend/src/routes/(app)/+layout.svelte new file mode 100644 index 0000000..9f67711 --- /dev/null +++ b/frontend/src/routes/(app)/+layout.svelte @@ -0,0 +1,9 @@ + + + + {@render children()} + diff --git a/frontend/src/routes/(app)/members/+page.svelte b/frontend/src/routes/(app)/members/+page.svelte new file mode 100644 index 0000000..a4722af --- /dev/null +++ b/frontend/src/routes/(app)/members/+page.svelte @@ -0,0 +1 @@ +

Mitglieder

diff --git a/frontend/src/routes/(app)/planner/+page.svelte b/frontend/src/routes/(app)/planner/+page.svelte new file mode 100644 index 0000000..dbb8271 --- /dev/null +++ b/frontend/src/routes/(app)/planner/+page.svelte @@ -0,0 +1 @@ +

Planer

diff --git a/frontend/src/routes/(app)/recipes/+page.svelte b/frontend/src/routes/(app)/recipes/+page.svelte new file mode 100644 index 0000000..1faa0a3 --- /dev/null +++ b/frontend/src/routes/(app)/recipes/+page.svelte @@ -0,0 +1 @@ +

Rezepte

diff --git a/frontend/src/routes/(app)/settings/+page.svelte b/frontend/src/routes/(app)/settings/+page.svelte new file mode 100644 index 0000000..f369397 --- /dev/null +++ b/frontend/src/routes/(app)/settings/+page.svelte @@ -0,0 +1 @@ +

Einstellungen

diff --git a/frontend/src/routes/(app)/shopping/+page.svelte b/frontend/src/routes/(app)/shopping/+page.svelte new file mode 100644 index 0000000..158e40e --- /dev/null +++ b/frontend/src/routes/(app)/shopping/+page.svelte @@ -0,0 +1 @@ +

Einkaufsliste

diff --git a/frontend/src/routes/(public)/+layout.svelte b/frontend/src/routes/(public)/+layout.svelte new file mode 100644 index 0000000..37af5a4 --- /dev/null +++ b/frontend/src/routes/(public)/+layout.svelte @@ -0,0 +1,12 @@ + + +
+ +
+ {@render children()} +
+
diff --git a/frontend/src/routes/(public)/login/+page.svelte b/frontend/src/routes/(public)/login/+page.svelte new file mode 100644 index 0000000..7b4a440 --- /dev/null +++ b/frontend/src/routes/(public)/login/+page.svelte @@ -0,0 +1,2 @@ +

Anmelden

+

Login-Formular folgt.

diff --git a/frontend/src/routes/+page.server.ts b/frontend/src/routes/+page.server.ts new file mode 100644 index 0000000..7985791 --- /dev/null +++ b/frontend/src/routes/+page.server.ts @@ -0,0 +1,6 @@ +import { redirect } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async () => { + redirect(302, '/planner'); +}; diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte new file mode 100644 index 0000000..36ec5ff --- /dev/null +++ b/frontend/src/routes/+page.svelte @@ -0,0 +1 @@ +

Weiterleitung...