Status: Akzeptiert Datum: 2025-12-17 Entscheider: Architektur-Team
Kontext
Beide Frontend-Anwendungen (Planung und Durchführung) benötigen Client-seitiges Routing für Navigation zwischen verschiedenen Views, ohne dass vollständige Seitenneuladungen erforderlich sind.
Entscheidung
Wir verwenden React Router v6 für Client-seitiges Routing in beiden Frontend-Modulen.
Begründung
Vorteile
- De-facto Standard für React-Routing
- Deklaratives Routing mit JSX-Syntax
- Nested Routes für hierarchische UI-Strukturen
- Data Loading mit Loaders (React Router 6.4+)
- Type-safe mit TypeScript-Unterstützung
- Lazy Loading von Route-Komponenten
- Große Community und umfangreiche Dokumentation
Alternativen
| Alternative | Grund für Ablehnung |
|---|---|
| TanStack Router | Zu neu, kleinere Community |
| Wouter | Zu minimalistisch für komplexe Anforderungen |
| Next.js Routing | Benötigt Next.js Framework (Overkill) |
Konsequenzen
Positiv
- SPA-Navigation ohne Seitenneuladungen
- Browser-History funktioniert korrekt
- URL-basierte Navigation ermöglicht Deep-Linking
- Code-Splitting pro Route möglich
Negativ
- Client-seitiges Routing erfordert zusätzliche Konfiguration beim Deployment (Nginx)
- SEO-Anforderungen müssen separat adressiert werden (aktuell nicht relevant)
Technische Details
// Routing-Struktur Planung-App
const router = createBrowserRouter([
{
path: "/",
element: <PlanningLayout />,
children: [
{ path: "saison", element: <SaisonPage /> },
{ path: "wettkampf", element: <WettkampfPage /> },
{ path: "anmeldung", element: <AnmeldungPage /> },
]
}
]);
// Routing-Struktur Durchführungs-App
const router = createBrowserRouter([
{
path: "/",
element: <ExecutionLayout />,
children: [
{ path: "setup", element: <WettkampfSetupPage /> },
{ path: "bewertung", element: <BewertungPage /> },
{ path: "auswertung", element: <AuswertungPage /> },
]
}
]);
Dependencies:
{
"react-router-dom": "^6.20.0"
}