Your goal
Create and test an installable PWA with a deliberate caching policy.
Install your own useful webapp and understand exactly what works offline.
BorrowBox works in a browser. You want a phone home-screen entry with a proper name, icon and an honest offline experience.
Create and test an installable PWA with a deliberate caching policy.
Open the same BorrowBox page on a phone-sized screen.
A PWA folder, an install test and an offline capability table.
This interactive model teaches the mechanism. It does not call a model, search your files or send messages.
A manifest supplies app identity and install information. Browser support and installation UX vary, so test the device rather than assuming every phone shows the same prompt.
A service worker can cache static app files. It does not automatically synchronize records, run a remote AI model offline or turn localStorage into cloud storage.
An old cached file can keep showing an outdated app. Name cache versions, remove obsolete caches in activation and test an update before sharing.
Start from BorrowBox. Keep index.html, manifest.webmanifest, sw.js and the supplied 192/512 icons together.
Check: All relative paths resolve when served.
Local file URLs are not the reliable service-worker test environment.
Set the name, short_name, start_url, display and icons in the manifest. Link it from HTML.
Check: Developer tools recognize the manifest and both icon sizes.
Use the supplied PNG icons; do not rename an SVG as a PNG.
Use localhost during development. Use HTTPS for phone deployment, then open the published URL on the phone.
Check: The service worker registers without a security error.
A localhost address on your laptop is not your phone localhost.
Cache the local static shell and approved starter files. Explain that external links and remote model calls still require connectivity.
Check: The capability table separates cached UI from network functions.
Cache only known app resources, not arbitrary sensitive responses.
Use the supported install or Add to Home Screen action. Disconnect network after a successful load, then reload and update a local item.
Check: The cached app opens and its local data still works where supported.
Offline success before a first load is not guaranteed.
Change a visible version label, update the cache version and test the installed app refresh.
Check: The new version eventually appears and the old cache is removed.
Document the observed update behavior instead of promising instant replacement.
Convert BorrowBox into a small PWA folder. Provide index.html, manifest.webmanifest and sw.js using existing 192/512 PNG icons. Explain localhost development and HTTPS phone testing. Cache the static shell with a named version and remove obsolete caches on activation. Include a manual install, offline and update checklist. Do not claim offline AI or cloud sync.
The browser UX or installability requirements differ.
Try: Inspect the manifest and security context, then follow the device-specific install flow.
Assets were never cached or their paths are wrong.
Try: Inspect service-worker cache entries and test after a successful online load.
An obsolete cache is still serving files.
Try: Use an explicit cache version and activation cleanup.
Tick a criterion only after checking your own artifact. These are self-reported checks, not an automated certification.
Adapt the PWA to a volunteer setup checklist and add a visible last-saved indicator.
A manifest supplies app identity and install information. Browser support and installation UX vary, so test the device rather than assuming every phone shows the same prompt.
A service worker can cache static app files. It does not automatically synchronize records, run a remote AI model offline or turn localStorage into cloud storage.
An old cached file can keep showing an outdated app. Name cache versions, remove obsolete caches in activation and test an update before sharing.
Use the primary documentation to verify this part of your build.
Apply it in the project labUse the primary documentation to verify this part of your build.
Apply it in the project lab