cogentapps / chat-with-gpt

An open-source ChatGPT app with a voice
https://www.chatwithgpt.ai
MIT License
2.29k stars 485 forks source link

Add service worker and make PWA installable #165

Closed ZauberNerd closed 11 months ago

ZauberNerd commented 1 year ago

This commit adds a service worker to make the app installable as a PWA. In addition to caching all generated build artifacts (css and js filse) the service worker also caches all other static files via a stale-while-revalidate strategy (png, ico, json, css from the public folder). Further, this commit adds a Notification which will be shown when the service worker updates and clicking on the button inside it causes the service worker to update and the page to reload.

In order to make a PWA installable we need to follow some guide lines: https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable

Fixes: #147

cogentapps commented 12 months ago

Thanks for working on this!

In my tests, it looks like the build isn't outputting /service-worker.js in the right place. I'll dig into it a bit more and try to see what the best fix is.

ZauberNerd commented 12 months ago

@cogentapps ah yes, this implementation relied on the workbox integration of create-react-app, so now we need to change it to vite. I found a vite-plugin-pwa and could refactor this PR for it.