Internal
Public Access
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>
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""
|
|
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):
|
|
"""
|
|
API root endpoint - returns available API endpoints.
|
|
"""
|
|
return JsonResponse({
|
|
'message': 'KeepItGoing API',
|
|
'version': '1.0',
|
|
'endpoints': {
|
|
'users': '/api/users/',
|
|
'tasks': '/api/tasks/',
|
|
'sync': '/api/sync/',
|
|
'notifications': '/api/notifications/',
|
|
'admin': '/admin/',
|
|
},
|
|
'status': 'running'
|
|
})
|