A Progressive Web App compatible with iOS 12+ and Windows.
https://internauten.github.io/pwasmal/
- ✅ Offline Support: Works without internet connection using Service Workers
- ✅ Installable: Can be installed on home screen (iOS) or as desktop app (Windows)
- ✅ Responsive Design: Works on all screen sizes
- ✅ iOS 12+ Compatible: Fully compatible with older iOS devices
- ✅ Windows Compatible: Works on all modern Windows browsers
- ✅ Fast Loading: Caches resources for instant loading
- ✅ Push Notifications: Support for web push notifications (where available)
Before deploying, you need to generate the app icons:
- Open
generate-icons.htmlin your browser - Click "Generate Icons" button
- Download all generated icons
- Create an
iconsfolder in your project root - Save all downloaded icons in the
iconsfolder
To test the PWA locally:
-
Install a local server. For example, using Python:
python -m http.server 8000
Or using Node.js:
npx http-server -p 8000
-
Open your browser and navigate to
http://localhost:8000
For the PWA to work properly, you need to deploy it to a server with HTTPS.
- Create a new repository on GitHub
- Push your code to the repository
- Go to Settings > Pages
- Select your branch and root folder
- Your PWA will be available at
https://yourusername.github.io/repository-name
- Create an account on Netlify or Vercel
- Connect your Git repository or drag and drop your folder
- Deploy with default settings
- Your PWA will be automatically deployed with HTTPS
To install on iOS 12+:
- Open the app in Safari
- Tap the Share button (square with arrow pointing up)
- Scroll down and tap "Add to Home Screen"
- Tap "Add" in the top right corner
- The app icon will appear on your home screen
To install on Windows:
- Open the app in Edge or Chrome
- Click the install icon in the address bar (or look for "Install App" prompt)
- Click "Install"
- The app will open in its own window and appear in your Start Menu
- iOS Safari: 12.0+
- Chrome: 58+
- Edge: 79+
- Firefox: 44+
- Samsung Internet: 4+
pwasmal/
├── index.html # Main HTML file
├── app.js # Application JavaScript
├── styles.css # Application styles
├── service-worker.js # Service Worker for offline support
├── manifest.json # PWA manifest file
├── generate-icons.html # Icon generator tool
├── icons/ # App icons (create this folder)
│ ├── icon-72.png
│ ├── icon-96.png
│ ├── icon-128.png
│ ├── icon-144.png
│ ├── icon-152.png
│ ├── icon-167.png
│ ├── icon-180.png
│ ├── icon-192.png
│ ├── icon-384.png
│ └── icon-512.png
└── README.md # This file
- Edit
manifest.json: Updatenameandshort_name - Edit
index.html: Update<title>and<h1>tags - Edit
service-worker.js: Update notification title if needed
- Edit
manifest.json: Updatetheme_colorandbackground_color - Edit
styles.css: Update CSS variables in:root
You can extend the app by:
- Adding more pages and routing
- Implementing a backend API
- Adding authentication
- Integrating with device features (camera, geolocation, etc.)
- Open DevTools (F12)
- Go to Application tab
- Check Service Workers section
- Verify the service worker is registered and running
- Open the app
- Open DevTools (F12)
- Go to Network tab
- Select "Offline" from the throttling dropdown
- Reload the page - it should still work
- Open the app in a supported browser
- Look for the install prompt or button
- Install the app
- Verify it opens in standalone mode
- Make sure all icons are in the
icons/folder - Check that icon paths in
manifest.jsonare correct - Clear cache and reload
- Ensure you're using HTTPS (required for service workers)
- Check browser console for errors
- Verify
service-worker.jspath is correct
- iOS Safari doesn't show automatic prompts (users must manually add to home screen)
- Chrome/Edge require HTTPS and certain criteria to be met
- Check if the app is already installed
MIT License - feel free to use this template for your own projects!