Skip to content

Technologie-Stack

Modernes Frontend-Stack mit SvelteKit 2, Svelte 5 Runes und Tailwind CSS 4.

graph TB
    subgraph Framework ["SvelteKit 2"]
        Routes["Routes<br/>+page.svelte"]
        Layout["+layout.svelte"]
        Lib["lib/<br/>Komponenten"]
    end

    subgraph UI ["UI Framework"]
        Shadcn["shadcn-svelte<br/>Badge, Button, Card"]
        Tailwind["Tailwind CSS 4"]
        Lucide["Lucide Icons"]
    end

    subgraph PWA ["PWA"]
        VitePWA["@vite-pwa/sveltekit"]
        Manifest["Web Manifest"]
        Workbox["Workbox SW"]
    end

    subgraph Build ["Build"]
        Vite["Vite 8"]
        Static["adapter-static<br/>SPA Fallback"]
        Define["Define Constants<br/>Versions-Info"]
    end

    Routes --> Lib
    Routes --> Shadcn
    Layout --> ModeWatcher["mode-watcher"]
    Lib --> Tailwind
    Lib --> Lucide
    Vite --> Static
    Vite --> Define
    Vite --> VitePWA
    VitePWA --> Manifest
    VitePWA --> Workbox
KategoriePaketVersionZweck
Framework@sveltejs/kit2.xSvelteKit Framework
Frameworksvelte5.xUI Library (Runes)
Stylingtailwindcss4.xUtility-First CSS
Styling@fontsource/inter5.xInter Schriftart
UIbits-ui2.xHeadless UI Primitives
UIlucide-svelte1.xIcon-Bibliothek
PWA@vite-pwa/sveltekit1.xPWA-Unterstutzung
Modemode-watcher1.xDark/Light/System
Buildvite8.xBuild-Tool
Testvitest4.xUnit Tests
Test@testing-library/svelte5.xComponent Tests
Linteslint10.xLinter
Lintprettier3.xFormatter
src/
├── routes/
│ ├── +layout.svelte # Root-Layout (ModeWatcher, Meta)
│ └── +page.svelte # Dashboard-Hauptseite
├── lib/
│ ├── components/
│ │ ├── version-card.svelte # Karten-Komponente
│ │ ├── git-info-row.svelte # Label-Value Zeile
│ │ ├── mode-toggle.svelte # Dark/Light Toggle
│ │ └── ui/ # shadcn-svelte
│ │ ├── badge/
│ │ ├── button/
│ │ ├── card/
│ │ └── separator/
│ ├── version-info.ts # Build-Time Konstanten
│ ├── utils.ts # cn() Helper
│ └── icon.ts # LucideIcon Type
└── app.css # Tailwind + Theme Variables

Die Anwendung nutzt Svelte 5 Runes statt klassischer Reactivity:

RuneVerwendung
$state()Reaktiver State (copied, pending)
$props()Komponenten-Props
$effect()Side Effects
{
"name": "Janus Home",
"short_name": "Janus",
"display": "standalone",
"theme_color": "#09090b",
"background_color": "#ffffff"
}
  • Registrierung: autoUpdate - Service Worker aktualisiert automatisch
  • Caching: Workbox cached js, css, html, svg, webmanifest
  • Scope: / mit SPA-Fallback

Unterstützt drei Modi über mode-watcher:

  1. System: OS-Einstellung folgen
  2. Light: Heller Modus
  3. Dark: Dunkler Modus

Farbvariablen in OKLCH-Farbraum fur präzise Steuerung in app.css.