Game · Mobile

Funlet

A quick mobile game built to load fast and keep working offline. It runs as a PWA in the browser and comes with store packaging files.

Funlet cover artwork
CategoryGame
PlatformWeb · Android · iOS
TechHTML · CSS · JS (PWA)
StatusStore-ready
Year2026

What does it do?

Funlet is designed for one-handed, short-session play on a phone. It's written entirely with web technologies; thanks to manifest.json and a service worker it can be installed to the home screen and still run offline.

To make store submission painless, the game ships with the parts that usually take the most time: icons in 25 sizes, store screenshots, copy-paste store texts and the privacy policy both stores require.

Highlights

  • Plays offline — after the first load the service worker caches everything.
  • Lightweight — no libraries, no framework, single-file game logic.
  • Store kit ready — icons, screenshots and texts sit in the repo.
  • PWA + packaging — PWABuilder can generate an Android AAB and an Xcode project for iOS.

Technical notes

The manifest.json declares store screenshots and icon sets, sw.js caches static files for offline play, and the privacy policy lives in its own HTML file because the stores want a URL.

funlet/
├─ index.html          → the game itself (PWA)
├─ manifest.json       → app name, icons, screenshot definitions
├─ sw.js               → offline support
├─ icons/              → 25 sizes (Android + iOS)
├─ screenshots/        → store listing images
├─ store-listing.md    → store copy (Turkish)
└─ privacy-policy.html → privacy policy
A real signed .aab or .ipa can't be produced in this environment — that needs the Android SDK, Xcode and an Apple account. The remaining step is feeding the live URL to PWABuilder. Android takes about 15 minutes; iOS needs a Mac and a paid Apple Developer membership.

Screenshots

What I learned

Shipping a web game to the stores is as much about packaging as it is about code — icons, texts and the privacy policy all get reviewed. I wrote up the whole process in this blog post.