Files
KeepItGoingServer/config/views.py
T
Keith SmithandClaude Sonnet 5 30c61351de 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>
2026-09-04 22:03:12 -06:00

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'
})