3.6 KiB
3.6 KiB
PWA Implementation Guide
Overview
The Port Nimara Portal has been implemented as a Progressive Web App (PWA) to provide users with a native app-like experience on mobile devices.
Features Implemented
1. PWA Configuration
- App Name: Port Nimara Portal
- Short Name: Port Nimara
- Theme Color: #387bca (brand primary color)
- Background Color: #ffffff
- Display Mode: standalone
- Start URL: /
- Icons: Multiple sizes from 72x72 to 512x512 pixels
2. Install Banner
- Location: Login page, below the login form
- Behavior:
- Only shows on mobile devices
- Hidden if app is already installed (standalone mode)
- Shows only once (dismissal stored in localStorage)
- Animated slide-in with 1-second delay
3. Installation Flow
- Android: Direct browser install prompt
- iOS: Step-by-step instructions modal
- Other browsers: Fallback instructions
4. Offline Support
- Service Worker: Auto-updating with Workbox
- Caching: Network-first for API calls, cache-first for assets
- Navigation Fallback: Routes to home page when offline
Files Added/Modified
New Files
components/PWAInstallBanner.vue- Install banner componentcomposables/usePWA.ts- PWA functionality composableplugins/pwa.client.ts- PWA initialization plugindocs/pwa-implementation.md- This documentation
Modified Files
nuxt.config.ts- Added PWA configurationpages/login.vue- Added install banner component
Configuration Details
PWA Module Settings
pwa: {
registerType: 'autoUpdate',
manifest: {
name: 'Port Nimara Portal',
short_name: 'Port Nimara',
description: 'Port Nimara Client Portal - Manage your berth interests and expressions of interest',
theme_color: '#387bca',
background_color: '#ffffff',
display: 'standalone',
orientation: 'portrait',
start_url: '/',
scope: '/',
icons: [/* 8 icon sizes */]
},
workbox: {
// Caching strategies
}
}
Icon Requirements
The following icon sizes are configured:
- 72x72, 96x96, 128x128, 144x144 (Android)
- 152x152, 192x192 (iOS, Android)
- 384x384, 512x512 (Splash screens, large displays)
All icons are located in /public/icons/ and based on the circular Port Nimara logo.
Browser Support
- Chrome/Edge (Android): Full PWA support with install prompt
- Safari (iOS): Manual installation via "Add to Home Screen"
- Firefox: Basic PWA support
- Other browsers: Graceful degradation with instructions
Usage Instructions
For Users
- Visit the login page on a mobile device
- If eligible, an install banner will appear below the login form
- Tap "Install App" to begin installation
- Follow platform-specific instructions if needed
For Developers
The PWA functionality is automatically initialized. Use the usePWA() composable to access PWA state:
const { isInstalled, canInstall, install, isMobile, isIOS } = usePWA();
Testing
- Test on actual mobile devices for best results
- Use Chrome DevTools > Application > Manifest to verify configuration
- Check Service Worker registration in DevTools > Application > Service Workers
- Test offline functionality by disabling network
Deployment Notes
- Ensure HTTPS is enabled (required for PWA)
- Icons must be accessible via direct URLs
- Service worker will be auto-generated and registered
- Manifest will be auto-generated from nuxt.config.ts settings
Future Enhancements
- Push notifications
- Background sync
- App shortcuts
- Share target functionality
- Install banner in dashboard for non-mobile users