From 530162cbf7fe8ee3557ce93e4546b1f279acf937 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 31 Jul 2026 22:52:18 +0200 Subject: [PATCH] feat: add PWA support --- README.md | 3 ++ server/src/app.ts | 36 ++++++++++++++++ web/index.html | 7 ++++ web/public/apple-touch-icon.png | Bin 0 -> 33679 bytes web/public/icon.svg | 8 ++++ web/public/manifest.webmanifest | 33 +++++++++++++++ web/public/pwa-192x192.png | Bin 0 -> 36019 bytes web/public/pwa-512x512.png | Bin 0 -> 24404 bytes web/public/pwa-maskable-512x512.png | Bin 0 -> 24404 bytes web/public/service-worker.js | 63 ++++++++++++++++++++++++++++ web/src/main.tsx | 6 +++ 11 files changed, 156 insertions(+) create mode 100644 web/public/apple-touch-icon.png create mode 100644 web/public/icon.svg create mode 100644 web/public/manifest.webmanifest create mode 100644 web/public/pwa-192x192.png create mode 100644 web/public/pwa-512x512.png create mode 100644 web/public/pwa-maskable-512x512.png create mode 100644 web/public/service-worker.js diff --git a/README.md b/README.md index e523eb7..27151b6 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ The current MVP slice includes: - disabled-by-default, serial-pinned ADB status, APK installation, package inventory, and validated app shortcuts; - live MG4 speed, gear, and steering-angle telemetry with a dedicated visual Car dashboard; - a responsive 1920×720-oriented setup, login, and dashboard UI; +- an installable PWA shell with standalone landscape display and cached dashboard assets; - an idempotent Raspberry Pi installer with systemd start-on-boot support; - atomic, dashboard-triggered Git updates with automatic verification and rollback safety; - optional dual-radio Wi-Fi failover with an always-recoverable offline car hotspot; @@ -106,6 +107,8 @@ npm run dev:web Open `http://127.0.0.1:5173`. The development server proxies API requests to `http://127.0.0.1:8787`. +The production build includes a web app manifest and service worker. PWA installation and offline shell caching require a secure browser context: HTTPS in production, or `localhost` during local use. The dashboard still requires the Pi connection for live data and authenticated actions. + Local development data is stored in `server/data/companion.db` and ignored by Git. ## Quality gate diff --git a/server/src/app.ts b/server/src/app.ts index d31aba2..63b8941 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -723,6 +723,42 @@ export async function buildApp(config: AppConfig): Promise { reply.type("text/html; charset=utf-8"); return reply.send(createReadStream(resolve(webRoot, "index.html"))); }); + const publicFiles: Record = { + "/manifest.webmanifest": { + file: "manifest.webmanifest", + type: "application/manifest+json; charset=utf-8", + cacheControl: "no-cache" + }, + "/service-worker.js": { + file: "service-worker.js", + type: "text/javascript; charset=utf-8", + cacheControl: "no-cache" + }, + "/icon.svg": { file: "icon.svg", type: "image/svg+xml", cacheControl: "public, max-age=86400" }, + "/pwa-192x192.png": { file: "pwa-192x192.png", type: "image/png", cacheControl: "public, max-age=86400" }, + "/pwa-512x512.png": { file: "pwa-512x512.png", type: "image/png", cacheControl: "public, max-age=86400" }, + "/pwa-maskable-512x512.png": { + file: "pwa-maskable-512x512.png", + type: "image/png", + cacheControl: "public, max-age=86400" + }, + "/apple-touch-icon.png": { + file: "apple-touch-icon.png", + type: "image/png", + cacheControl: "public, max-age=86400" + } + }; + for (const [route, asset] of Object.entries(publicFiles)) { + app.get(route, async (_request, reply) => { + const assetPath = resolve(webRoot, asset.file); + if (!existsSync(assetPath) || !statSync(assetPath).isFile()) { + return reply.code(404).send({ error: { code: "NOT_FOUND", message: "Asset not found" } }); + } + reply.type(asset.type); + reply.header("Cache-Control", asset.cacheControl); + return reply.send(createReadStream(assetPath)); + }); + } app.get<{ Params: { file: string } }>("/assets/:file", async (request, reply) => { if (!/^[a-zA-Z0-9._-]+$/.test(request.params.file)) { return reply.code(404).send({ error: { code: "NOT_FOUND", message: "Asset not found" } }); diff --git a/web/index.html b/web/index.html index 957363a..9a380cb 100644 --- a/web/index.html +++ b/web/index.html @@ -5,6 +5,13 @@ + + + + + + + Pi Car Companion diff --git a/web/public/apple-touch-icon.png b/web/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9eff0ce3c91f76f6f6f2bda5fbc325cdc204755c GIT binary patch literal 33679 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 q=U1=sBmmnQ-A44*j32MML42PjdZ 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 ZMlt!8mvEnRMh*l0$xEw9)k>Iz{y)!`3T*%Y literal 0 HcmV?d00001 diff --git a/web/public/icon.svg b/web/public/icon.svg new file mode 100644 index 0000000..8cb6826 --- /dev/null +++ b/web/public/icon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/web/public/manifest.webmanifest b/web/public/manifest.webmanifest new file mode 100644 index 0000000..0ee062e --- /dev/null +++ b/web/public/manifest.webmanifest @@ -0,0 +1,33 @@ +{ + "id": "/", + "name": "Pi Car Companion", + "short_name": "Pi Car", + "description": "Local dashboard for your Raspberry Pi car companion.", + "start_url": "/", + "scope": "/", + "display": "standalone", + "orientation": "landscape", + "background_color": "#10130f", + "theme_color": "#10130f", + "categories": ["navigation", "utilities"], + "icons": [ + { + "src": "/pwa-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/pwa-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/pwa-maskable-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/web/public/pwa-192x192.png b/web/public/pwa-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..38a84811b3ab5d48cf177e5dc7e6ca50e3ea413a GIT binary patch literal 36019 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 qB_|*pNMxe$|9$ws7(hQLA~LTK { + event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(APP_SHELL))); + self.skipWaiting(); +}); + +self.addEventListener("activate", (event) => { + event.waitUntil( + caches + .keys() + .then((keys) => Promise.all(keys.filter((key) => key !== CACHE_NAME).map((key) => caches.delete(key)))) + .then(() => self.clients.claim()) + ); +}); + +self.addEventListener("fetch", (event) => { + const request = event.request; + if (request.method !== "GET") return; + + const url = new URL(request.url); + if (url.origin !== self.location.origin || url.pathname.startsWith("/api/") || url.pathname === "/healthz") return; + + if (request.mode === "navigate") { + event.respondWith( + fetch(request) + .then((response) => { + if (response.ok) { + const copy = response.clone(); + event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.put("/", copy))); + } + return response; + }) + .catch(() => caches.match("/")) + ); + return; + } + + if (url.pathname.startsWith("/assets/") || APP_SHELL.includes(url.pathname)) { + event.respondWith( + caches.match(request).then( + (cached) => + cached ?? + fetch(request).then((response) => { + if (response.ok) { + const copy = response.clone(); + event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.put(request, copy))); + } + return response; + }) + ) + ); + } +}); diff --git a/web/src/main.tsx b/web/src/main.tsx index 33837d7..29ea15a 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -8,3 +8,9 @@ createRoot(document.getElementById("root")!).render( ); + +if (import.meta.env.PROD && "serviceWorker" in navigator) { + window.addEventListener("load", () => { + void navigator.serviceWorker.register("/service-worker.js"); + }); +}