Files
Todo/app/layout.tsx
Paul Bailey ef6a0bf5af feat: Set up PWA infrastructure with service worker, offline support, and manifest
- Created service worker (public/sw.js) with caching strategies
  - Cache-first strategy for static assets
  - Stale-while-revalidate for API responses and pages
  - Network-first fallback strategy
- Implemented offline fallback page (/offline)
- Updated manifest.json with complete PWA metadata
- Added service worker registration in app layout
- Created ServiceWorkerRegistration component for client-side registration
- Generated SVG icons for PWA (192x192 and 512x512)
- Added PWA meta tags for iOS Safari support

Validates Requirements: 4.1, 4.3, 4.4
2025-12-01 20:30:07 +00:00

43 lines
1.2 KiB
TypeScript

import type { Metadata } from 'next'
import './globals.css'
import ServiceWorkerRegistration from '@/components/ServiceWorkerRegistration'
export const metadata: Metadata = {
title: 'Ultimate Lists',
description: 'The ultimate todo list app with advanced task management',
manifest: '/manifest.json',
themeColor: '#3B82F6',
viewport: 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no',
appleWebApp: {
capable: true,
statusBarStyle: 'default',
title: 'Ultimate Lists',
},
applicationName: 'Ultimate Lists',
icons: {
icon: '/icon-192.svg',
apple: '/icon-192.svg',
},
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<head>
<link rel="apple-touch-icon" href="/icon-192.svg" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="Ultimate Lists" />
<meta name="mobile-web-app-capable" content="yes" />
</head>
<body className="bg-gray-50 min-h-screen">
<ServiceWorkerRegistration />
{children}
</body>
</html>
)
}