3 ms·
Show HN: Manage Casio G-Shock watches from the browser
I've been maintaining GShockSmartSync (Android) for a while, and a recurring ask was "can I do this without installing an app?" So I built a browser-based version using the Web Bluetooth API.
What it does:
- Time sync with NTP (atomic-clock precision)
- Full alarm management (all 5 alarms)
- Reminders/events with labels
- Watch settings (illumination, sound, display)
- Battery level monitoring
- Zero install, zero accounts — all BLE traffic stays local between your browser and the watch
Tech: Next.js + TypeScript, Web Bluetooth API, Material Design 3. Supports 19+ G-Shock models with per-model capability detection.
Live demo: https://gshock.avmedia.org https://gshock.avmedia.org
Source: https://github.com/izivkov/gshock-smart-sync-webapp https://github.com/izivkov/gshock-smart-sync-webapp
Can be self-hosted on a Raspberry Pi or any Node-capable server.
Browser support: Chrome/Edge/Opera (desktop & Android). iOS needs Bluefy or WebBLE. Safari and Firefox don't support Web Bluetooth — that's a vendor decision, not a fixable limitation on my end.
One honest limitation: Web Bluetooth requires an explicit user gesture to initiate a connection, so there's no background auto-sync — you click "Pair Watch" each session. Fine for my use case, but worth knowing upfront.
The most interesting part was reverse-engineering the BLE protocol. Happy to go into detail on that if anyone's curious.