- Name: "Dirt Free CRM"
- Short name: "DirtFreeCRM"
- Description and start URL configured
- Display: "standalone"
- Theme color: "#3060A0"
- Icons: 192x192, 512x512, 512x512-maskable
- All required manifest fields present
- icon-192x192.png (placeholder created)
- icon-512x512.png (placeholder created)
- icon-512x512-maskable.png (placeholder created)
- Paths match manifest configuration
- Workbox implementation with precaching
- Static assets caching (fonts, styles, images)
- /tech-weekly route offline caching (read-only)
- Sensitive data exclusion (auth, customers, jobs, reminders)
- Stale-while-revalidate strategy for assets
- Install prompt event handling
- next-pwa integration
- Output to public/sw.js
- Disabled in development
- Runtime caching configuration
- beforeinstallprompt event handling
- Shadcn Dialog UI component
- Session-based dismissal logic
- "Install" and "Not now" actions
- Benefits explanation for users
- Manifest link:
<link rel="manifest" href="/manifest.json" /> - Theme color meta tag: "#3060A0"
- Apple PWA meta tags
- InstallPrompt component included
- PWA metadata configuration
- Lighthouse PWA audit script (scripts/lighthouse-pwa-check.js)
- PWA checklist documentation
- App builds without errors (
npm run build) - Manifest loads correctly at
/manifest.json - Icons load properly from
/icons/directory - Service worker registers and activates
- Install prompt appears (desktop Chrome/Edge)
- Install prompt can be dismissed
- /tech-weekly works offline after initial visit
- Score ≥ 90/100 overall
- ✅ Installable manifest
- ✅ Service worker registered
- ✅ Works offline
- ✅ Offline start URL responds
- ✅ Has viewport meta tag
- ✅ Themed omnibox
- ✅ Has maskable icon
- Sensitive routes NOT cached:
- /api/auth/*
- /api/customers/*
- /api/jobs/*
- /api/reminders/*
- /dashboard/*
- /customers/*
- /jobs/*
- /reminders/*
# Install Lighthouse globally
npm install -g lighthouse
# Start production build
npm run build
npm start
# Run PWA audit
node scripts/lighthouse-pwa-check.js- Open app in Chrome/Edge desktop
- Navigate to homepage
- Install prompt should appear automatically
- Test "Install" and "Not now" buttons
- Verify it doesn't reappear in same session
- Visit /tech-weekly route
- Open Chrome DevTools > Application > Service Workers
- Check "Offline" checkbox
- Refresh page - should still work
- Try navigating to sensitive routes - should show offline page
The current icons are SVG placeholders. For production:
# Convert SVG to PNG using your preferred tool
npm run convert-icons # (implement this script)
# Or use online converters, design tools, etc.- Monitor PWA install rates via analytics
- Track offline usage patterns
- Monitor service worker cache hit rates
- Lighthouse CI for continuous PWA scoring
- Chrome/Edge: Full PWA support with install prompts
- Firefox: Service worker + manifest (no install prompt UI)
- Safari: Basic service worker support (iOS 11.3+)
- Mobile browsers: Add to homescreen functionality