annotate mrjunejune/PWA_SETUP.md @ 251:117c4d53c9a4

[ui] Add HTML-first Web Component system Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Tue, 04 Aug 2026 09:14:57 -0700
parents 9c2eec61a152
children e02e2036ef84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
1 # PWA Setup Guide
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
2
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
3 Your site is now configured as a Progressive Web App! 🎉
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
4
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
5 ## What's Been Added
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
6
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
7 1. **manifest.json** - App configuration
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
8 2. **sw.js** - Service worker for caching and offline support
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
9 3. **pwa-register.js** - Service worker registration
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
10 4. **offline.html** - Offline fallback page
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
11 5. **Updated base_head.html** - Links to manifest and PWA script
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
13 ## App Icons and WebP Assets
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
15 All shipped raster images are generated as WebP by Bazel. Source PNGs live
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
16 under `mrjunejune/assets/png/` and are never copied into the release bundle.
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
17
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
18 ```bash
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
19 bazel build //mrjunejune:generated_webp_assets
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
20 ```
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
21
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
22 The complete site bundle also runs the conversion pipeline:
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
23
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
24 ```bash
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
25 bazel build //mrjunejune:mrjunejune_server_bundle
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
26 ```
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
27
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
28 ## Optional: Screenshots (for better app install experience)
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
29
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
30 Create screenshots of your site:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
31
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
32 ```bash
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
33 # Mobile screenshot (540x720)
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
34 screenshot-mobile.webp
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
35
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
36 # Desktop screenshot (1280x720)
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
37 screenshot-desktop.webp
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
38 ```
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
39
241
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
40 You can use browser DevTools to capture these. Add their PNG sources to the
9c2eec61a152 [assets] Generate site images as WebP with Bazel
MrJuneJune <me@mrjunejune.com>
parents: 209
diff changeset
41 WebP asset list before referencing the generated `.webp` files in the manifest.
209
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
42
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
43 ## Testing Your PWA
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
44
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
45 1. **Serve over HTTPS** - PWAs require HTTPS (localhost works for testing)
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
46 2. **Open Chrome DevTools** → Application tab → Manifest
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
47 3. **Check Service Worker** → Application tab → Service Workers
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
48 4. **Lighthouse Audit** → Run PWA audit to see score
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
49
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
50 ## Install Prompt
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
51
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
52 When users visit your site, they'll see an "Install App" button in the bottom-right corner for 10 seconds. They can:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
53 - Click it to install immediately
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
54 - Use browser menu: "Install MrJuneJune" or "Add to Home Screen"
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
55
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
56 ## Features
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
57
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
58 ✅ **Offline Support** - Caches pages, CSS, JS, fonts, images
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
59 ✅ **App Shortcuts** - Quick access to Blog and Notes
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
60 ✅ **Install Prompt** - Automatic install button
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
61 ✅ **Auto-updates** - Service worker updates on reload
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
62 ✅ **Fast Loading** - Cached resources load instantly
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
63
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
64 ## Customization
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
65
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
66 Edit `manifest.json` to change:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
67 - `theme_color` - App theme color
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
68 - `background_color` - Splash screen color
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
69 - `display` - `standalone`, `fullscreen`, `minimal-ui`, or `browser`
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
70 - `shortcuts` - App shortcut menu items
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
71
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
72 Edit `sw.js` to change:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
73 - `CACHE_VERSION` - Increment to force cache refresh
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
74 - `STATIC_CACHE` - Files to cache immediately
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
75 - Caching strategy (currently: cache-first with network fallback)
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
76
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
77 ## Testing on Mobile
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
78
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
79 ### Android:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
80 1. Open Chrome
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
81 2. Visit your site
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
82 3. Tap menu → "Install app" or "Add to Home Screen"
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
83
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
84 ### iOS (Safari):
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
85 1. Open Safari
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
86 2. Tap Share button
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
87 3. Tap "Add to Home Screen"
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
88
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
89 Note: iOS has limited PWA support (no install prompt, limited background features)
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
90
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
91 ## Debugging
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
92
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
93 Check console for:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
94 - `[PWA]` - Registration events
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
95 - `[SW]` - Service worker caching events
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
96
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
97 Clear cache:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
98 ```js
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
99 navigator.serviceWorker.controller.postMessage({ type: 'CLEAR_CACHE' });
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
100 ```
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
101
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
102 ## Next Steps
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
103
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
104 1. Generate the PNG icons (see commands above)
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
105 2. Test on HTTPS
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
106 3. Run Lighthouse audit
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
107 4. Deploy and test on mobile device
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
108 5. Consider adding:
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
109 - Push notifications
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
110 - Background sync
3b47e82ac57e [MrJuneJune] PWA updates.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
111 - Share target API