Internal
Public Access
Make the web app installable as a PWA (Tier 1: app shell + offline fallback)
Adds a manifest, service worker, and branded icons so the site can be installed to a home screen/desktop, plus an offline fallback page so a dropped connection shows something friendlier than the browser's default error. Icons are rasterized from the existing favicon.svg mark via rsvg-convert. The manifest and service worker are served through small Django views (not raw static files) so their asset URLs pick up WhiteNoise's content-hashed filenames in prod/selfhosted, and the service worker is served from the site root so its scope covers the whole app. Does not include true offline task data or Web Push notifications -- those are tracked separately as larger follow-up projects. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a23600a486
commit
30c61351de
@@ -3,6 +3,23 @@ API root views for KeepItGoing.
|
||||
"""
|
||||
|
||||
from django.http import JsonResponse
|
||||
from django.shortcuts import render
|
||||
|
||||
|
||||
def manifest_webmanifest(request):
|
||||
"""Serve the PWA web app manifest, rendered so icon URLs pick up static hashing."""
|
||||
return render(request, 'manifest.webmanifest', content_type='application/manifest+json')
|
||||
|
||||
|
||||
def service_worker(request):
|
||||
"""
|
||||
Serve the service worker script from the site root so its default scope
|
||||
covers the whole app (a service worker can only control paths at or
|
||||
below where it's served from).
|
||||
"""
|
||||
response = render(request, 'sw.js', content_type='application/javascript')
|
||||
response['Cache-Control'] = 'no-cache'
|
||||
return response
|
||||
|
||||
|
||||
def api_root(request):
|
||||
|
||||
Reference in New Issue
Block a user