One data source, two clients
Most "weather app" side projects stop at temperature and a forecast icon. This one treats air quality as a first-class citizen, sourced correctly, and ships it to both a browser and a phone.
Real US AQI
Pulled from Open-Meteo's us_aqi field, the actual EPA-calculated index, not a rough PM2.5-only approximation.
Default + override
Opens on Penang/George Town by default, with a manual latitude/longitude override so anyone can check their own location instantly.
Color-coded status
Good / Moderate / Unhealthy badges, so the number doesn't need interpreting, the color says it at a glance.
Same API, two native experiences
Both clients hit Open-Meteo directly for weather and air quality, then apply the same EPA breakpoints to color the badge, so the web dashboard and the Android app always agree.
Next.js dashboard
Server-rendered pages fetch current conditions and the US AQI breakdown for the active location, deployed on Cloud Run and reachable from any browser, no install required.
Jetpack Compose app
A native Kotlin app built with Jetpack Compose, using Retrofit over REST to call the same weather and AQI endpoints, packaged and released via a GitHub Actions CI/CD pipeline.
Tech stack
Kept deliberately small: two clients, one public API, one CI/CD pipeline for the Android release.
Try it
The web dashboard is live right now. The Android app builds and releases automatically via CI; a tagged v1.0.0 APK is available as a GitHub Release.
Web dashboard
Deployed on Cloud Run, no install, works on desktop and mobile browsers.
Open Live Web AppAndroid APK
v1.0.0 is built and published as a GitHub Release asset via CI/CD (unsigned/debug-signed build). The source repo is private, so downloading requires being signed into a GitHub account with access to it.
Download APK (GitHub login required)