pwa / offline mode

- @vite-pwa/sveltekit: workbox precache (incl. pdfjs worker), generated manifest, prompt-style updates via PwaUpdatePrompt toast
- prerendered routes for offline navigation, PWA icons, theme-color + apple-touch-icon
- pwa offline/update e2e suite (pnpm test:pwa, playwright.pwa.config.ts)
- datenschutz: offline/install section; prettier cleanup of shadcn components
This commit is contained in:
rehlert committed 2026-10-04 12:55:46 +02:00
1 parent b7969b4c9e
commit f09384d2e6
37 files changed
+4130 -273

No files matched your search

+8
View File
@@ -1,12 +1,18 @@
<script lang="ts">
import './layout.css';
import { pwaInfo } from 'virtual:pwa-info';
import favicon from '$lib/assets/favicon.svg';
import PwaUpdatePrompt from '$lib/components/PwaUpdatePrompt.svelte';
let { children } = $props();
</script>
<svelte:head>
<link rel="icon" href={favicon} />
{#if pwaInfo}
<!-- rendered on the client only: the manifest is part of the production build output -->
{@html pwaInfo.webManifest.linkTag}
{/if}
</svelte:head>
<div class="flex min-h-dvh flex-col">
<header style="height:72px" class="grid shrink-0 place-content-center bg-white shadow">
@@ -19,6 +25,8 @@
{@render children()}
</div>
<PwaUpdatePrompt />
<footer
class="mt-8.75 flex h-96 min-h-78.5 shrink-0 flex-col justify-end gap-15 px-4 py-8.75 text-white"
style="background-image: url('/footer.svg');background-position: top right; background-size: cover; background-repeat: no-repeat"
+5
View File
@@ -0,0 +1,5 @@
// Every route is rendered from static markup and processes data purely in the browser, so all
// pages are prerendered. That is what makes the PWA work offline: `@vite-pwa/sveltekit` precaches
// `prerendered/**/*.{html,json}` (see vite.config.ts), so the service worker can answer document
// navigations without a server.
export const prerender = true;
+18
View File
@@ -402,6 +402,24 @@
Darstellung und der Optimierung seiner Website – hierzu müssen die Server-Log-Files
erfasst werden.
</p>
<h3>Offline-Nutzung als App (Progressive Web App)</h3>
<p>
Diese Website ist technisch so aufgebaut, dass sie sich als sogenannte Progressive Web
App (PWA) in Ihrem Browser installieren und auch ohne bestehende Internetverbindung
nutzen lässt. Zu diesem Zweck speichert Ihr Browser die für den Betrieb der Website
benötigten Dateien (z. B. Grafiken und Programmdateien) in einem lokalen Cache.
</p>
<p>
In diesem Cache werden ausschließlich diese Anwendungsdateien abgelegt. Die von Ihnen
verarbeiteten Dokumente werden nicht gespeichert, nicht übertragen und verlassen Ihr
Gerät nicht: Sämtliche Verarbeitungsschritte erfolgen vollständig lokal in Ihrem
Browser. Durch die Offline-Nutzung werden keine personenbezogenen Daten erhoben.
</p>
<p>
Sie können die gespeicherten Anwendungsdateien jederzeit löschen, indem Sie die
Website-Daten in den Einstellungen Ihres Browsers entfernen.
</p>
</section>
<p class="source">