A calculator with a built-in live currency converter — the feature the iPhone Calculator has but Android's doesn't. It installs to your Android home screen as an app (a PWA), runs full‑screen, and works offline using the last downloaded exchange rates.
- Full calculator — add, subtract, multiply, divide, percent, +/−, decimals, with thousands separators and a clean iOS‑style dark keypad.
- Convert mode — pick a from and to currency and the amount you type (or calculate) is converted live as you go. Tap ⇄ to reverse.
- 160+ currencies with search, flags, and proper symbols (€, £, ¥, ₹, …).
- Works offline — the app shell is cached and the latest rates are stored on your phone, so it keeps working with no signal (rates show an "offline" note with their date).
- No accounts, no ads, no API keys. Rates come from free, keyless public sources.
- Open the live URL in Chrome on your phone:
https://ablack34.github.io/conversion-calculator/ - Tap the ⋮ menu (top‑right) → Add to Home screen (or Install app).
- Confirm. A "Currency Calculator" icon appears on your home screen.
- Launch it from that icon — it opens full‑screen like a normal app and works offline.
Tip: to make it your go‑to, drop the icon where the old calculator lived, or add it to your dock/favourites.
- Primary: open.er-api.com (free tier, 160+ currencies, keyless)
- Fallback: frankfurter.dev (European Central Bank rates, keyless)
Rates update roughly once a day — ideal for travel. The most recent rates are cached locally so the app works without a connection.
It's a plain static site (no build step):
# any static file server works, e.g.:
npx serve .
# then open http://localhost:3000Vanilla HTML/CSS/JS with a service worker for offline support — no framework, no bundler.
| File | Purpose |
|---|---|
index.html |
Markup for the display, keypad, and currency picker |
styles.css |
iOS‑style dark theme, responsive to phone screens |
app.js |
Calculator engine, convert mode, rate fetching + offline cache |
currencies.js |
Currency names, symbols, and flag lookup |
sw.js |
Service worker (offline app‑shell cache) |
manifest.webmanifest |
PWA metadata so it installs to the home screen |
Pushing to main runs .github/workflows/deploy.yml, which publishes the site to
GitHub Pages. GitHub Pages must be set to "GitHub Actions" as the source
(Settings → Pages). On a private repository, Pages requires a paid GitHub plan; on a public
repository it's free.