diff --git a/frontend/package.json b/frontend/package.json index 6a1ec7e..7c16f33 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ }, "devDependencies": { "@vitejs/plugin-react": "^4.3.1", - "vite": "^5.4.8" + "vite": "^5.4.8", + "vite-plugin-pwa": "^0.20.0" } } diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000..7ab2313 Binary files /dev/null and b/frontend/public/favicon.ico differ diff --git a/frontend/public/icons/icon-512.png b/frontend/public/icons/icon-512.png new file mode 100644 index 0000000..48f2546 Binary files /dev/null and b/frontend/public/icons/icon-512.png differ diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx index ce286a9..76a1787 100644 --- a/frontend/src/main.jsx +++ b/frontend/src/main.jsx @@ -1,5 +1,7 @@ import React from "react"; import { createRoot } from "react-dom/client"; import App from "./App.jsx"; +import { registerSW } from "virtual:pwa-register"; createRoot(document.getElementById("root")).render(); +registerSW({ immediate: true }); diff --git a/frontend/vite.config.js b/frontend/vite.config.js index 081c8d9..ef03953 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -1,6 +1,34 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; +import { VitePWA } from "vite-plugin-pwa"; export default defineConfig({ - plugins: [react()], + plugins: [ + react(), + VitePWA({ + registerType: "autoUpdate", + includeAssets: [ + "favicon.ico", + "icons/icon-512.png", + "marauders-map.jpg" // oder dein Hintergrund + ], + manifest: { + name: "Zauber-Detektiv Notizbogen", + short_name: "Notizbogen", + description: "Cluedo-Magie Sheet", + start_url: "/", + scope: "/", + display: "standalone", + background_color: "#1c140d", + theme_color: "#caa45a", + icons: [ + { src: "/icons/icon-512.png", sizes: "512x512", type: "image/png" } + ] + }, + workbox: { + // Caching-Default: die App-Shell wird offline verfügbar + globPatterns: ["**/*.{js,css,html,ico,png,jpg,jpeg,svg,webp}"], + } + }) + ] });