MQL5-Google-Onedrive/docs/PWA_GUIDE.md
google-labs-jules[bot] e9918dcb22 docs: update Cloudflare nameservers and unify domain name
- Added daisy.ns.cloudflare.com and rocco.ns.cloudflare.com to Cloudflare guide.
- Unified domain name to lengkundee01.org in CNAME and PWA guide.
- Verified active domain using dig.
- Updated sentinel journal with documentation learnings.
2026-02-13 04:11:32 +00:00

8 KiB

Progressive Web App (PWA) Implementation Guide

Overview

The MQL5 Trading Automation dashboard has been enhanced with Progressive Web App (PWA) capabilities, enabling offline functionality, installability, and improved performance.

Features Implemented

1. Service Worker (service-worker.js)

A service worker provides:

  • Offline functionality: The app works even without internet connection
  • Cache management: Static assets are cached for fast loading
  • Background sync: Future support for background data synchronization
  • Push notifications: Infrastructure ready for trading alerts

Key Features:

  • Cache-first strategy for static assets (HTML, CSS, JS)
  • Network-first strategy for API requests
  • Automatic cache updates and cleanup
  • Support for commands via messaging API

2. Web App Manifest (manifest.json)

The manifest enables:

  • Installability: Users can install the app on their device
  • Standalone mode: Runs in its own window without browser UI
  • Custom branding: App name, colors, and icons
  • Shortcuts: Quick access to key features

Configuration:

  • Name: "MQL5 Trading Automation"
  • Theme color: #667eea (purple gradient)
  • Display mode: standalone
  • Icons: 72x72 to 512x512 (placeholder SVG provided)

3. Service Worker Inspector (sw-inspector.html)

A comprehensive debugging tool featuring:

  • Status monitoring: Real-time service worker state
  • Cache inspection: View and manage cached resources
  • Update management: Force updates and unregister service worker
  • Activity logging: Track all service worker events
  • PWA installation: Install prompt management

4. Offline Fallback (offline.html)

A user-friendly offline page that:

  • Displays when network requests fail
  • Auto-detects when connection is restored
  • Provides a retry button
  • Maintains branding and user experience

Usage

For Users

  1. Accessing the Dashboard:

    • Visit the site: https://lengkundee01.org (or your deployed URL)
    • The service worker will automatically register on first visit
  2. Installing as PWA:

    • Look for the install prompt in your browser (usually in the address bar)
    • Click "Install" to add to your home screen/app drawer
    • The app will open in standalone mode
  3. Using Offline:

    • Once visited, the app works offline
    • Cached pages load instantly even without internet
    • Network requests will queue and sync when back online
  4. Inspecting Service Worker:

    • Navigate to "Service Worker" card on dashboard
    • Click "Inspect Views" button
    • Access /sw-inspector.html directly

For Developers

Manual Service Worker Registration

The service worker is automatically registered in both index.html and dashboard/index.html:

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js')
    .then(registration => {
      console.log('Service Worker registered');
    });
}

Cache Management

Precached assets:

  • / (root)
  • /index.html
  • /dashboard/index.html
  • /manifest.json
  • /sw-inspector.html
  • /offline.html

Runtime cache:

  • API requests
  • Dynamically loaded resources
  • User-accessed pages

Updating the Service Worker

  1. Modify service-worker.js
  2. Increment the cache version:
    const CACHE_NAME = 'mql5-automation-v2'; // Increment version
    
  3. Deploy the changes
  4. Users will be prompted to reload for the update

Testing Locally

  1. Start a local HTTPS server (Service Workers require HTTPS):

    # Using Python
    python3 -m http.server 8080
    
    # Or use a tool like http-server with SSL
    npx http-server -S -C cert.pem -K key.pem
    
  2. Chrome DevTools:

    • Open Chrome DevTools (F12)
    • Go to "Application" tab → "Service Workers"
    • Check registration status
    • Test offline mode with "Offline" checkbox
  3. Firefox DevTools:

    • Open DevTools (F12)
    • Go to "Application" → "Service Workers"
    • Test offline functionality
  4. Lighthouse Audit:

    • Run PWA audit in Chrome DevTools
    • Check for PWA compliance
    • Address any warnings

Icon Generation

The repository includes a placeholder SVG icon at /icons/icon.svg. To generate PNG icons:

Option 1: Using ImageMagick

cd icons
# Ensure you have ImageMagick installed
for size in 72 96 128 144 152 192 384 512; do
  convert icon.svg -resize ${size}x${size} icon-${size}x${size}.png
done

Option 2: Online Tools

  1. Visit RealFaviconGenerator
  2. Upload the SVG file
  3. Download generated icons
  4. Place in /icons/ directory

Option 3: PWA Asset Generator

npm install -g pwa-asset-generator
pwa-asset-generator icons/icon.svg icons/ --background "#667eea"

Browser Support

Feature Chrome Firefox Safari Edge
Service Workers 40+ 44+ 11.1+ 17+
Web App Manifest 39+ (partial) 15+ 17+
Push Notifications 50+ 44+ 16+ 17+
Background Sync 49+ 79+

Troubleshooting

Service Worker Not Registering

  1. Check HTTPS: Service Workers require HTTPS (or localhost)
  2. Check scope: Ensure service-worker.js is at root
  3. Check console: Look for registration errors
  4. Clear cache: Hard refresh (Ctrl+Shift+R)

Offline Mode Not Working

  1. Check cache: Use sw-inspector.html to view cache
  2. Check network: Ensure resources are being cached
  3. Check errors: Look for fetch errors in console
  4. Test in DevTools: Use offline mode checkbox

Update Not Applying

  1. Check version: Ensure cache version was incremented
  2. Force update: Use sw-inspector.html to force update
  3. Hard refresh: Clear cache and reload
  4. Unregister: Remove service worker and re-register

Icons Not Showing

  1. Generate icons: Create PNG files from SVG
  2. Check paths: Ensure manifest points to correct locations
  3. Check sizes: Manifest requires 192x192 and 512x512 minimum
  4. Validate manifest: Use Chrome DevTools to check manifest

Security Considerations

  1. HTTPS Only: Service Workers only work over HTTPS
  2. Same-Origin: Service Worker must be same-origin as site
  3. Scope Limitation: Service Worker can only control its scope
  4. Content Security Policy: Ensure CSP allows service workers

Performance Metrics

With Service Worker:

  • First load: ~500ms (after caching)
  • Subsequent loads: <100ms (from cache)
  • Offline: Full functionality maintained
  • Network requests: Cached responses

Without Service Worker:

  • First load: ~2-3s (network dependent)
  • Subsequent loads: ~1-2s (network dependent)
  • Offline: No functionality
  • Network requests: Always fetch from server

Future Enhancements

Potential improvements:

  • Background sync for trading data
  • Push notifications for trade alerts
  • Periodic background sync for market updates
  • Share target API for sharing trade setups
  • Badge API for notification counts
  • Web Share API integration

Resources

Testing Checklist

  • Service worker registers successfully
  • Manifest is valid JSON
  • Service worker inspector loads
  • Offline page displays correctly
  • Icons are generated (PNG files)
  • App is installable
  • Offline mode works
  • Cache updates automatically
  • Push notifications work (when implemented)
  • Lighthouse PWA audit passes

Support

For issues or questions:

  • Check the Service Worker Inspector at /sw-inspector.html
  • Review browser console for errors
  • Use Chrome DevTools Application tab
  • Refer to this guide for troubleshooting

Version: 1.0.0
Last Updated: February 1, 2026
Author: Copilot Agent