Your watch is an NFC tag now.
Pick a link on your wrist, hold the watch to someone's phone, and their phone opens it. Your website, a video, your contact card, or a "totally normal link". No app on their end. No pairing. No account.
Small app.
Unreasonably fun.
Everything a tag can hold, on a watch you already wear, with presets you edit from a real keyboard.
Any link, instantly
Android opens it the moment it reads the tag, YouTube links straight into the YouTube app. iPhones show a banner to tap.
Contact cards
Beam a vCard and Android offers to save you.
Quick tile
Seven presets, one swipe from the watch face.
Browser editor
Paste, rename, reorder. It autosaves and the watch syncs.
Offline
Presets are cached, so beaming never needs a network.
Buzz buzz
Two taps on your wrist when the phone has read the whole tag.
Wallet-safe
An "other" category service, so tap-to-pay never notices it.
How a watch
becomes a tag.
Android's Host Card Emulation lets an app answer the exact commands a real NFC Forum Type 4 tag would. Flick implements just enough of that tag, and nothing else.
The phone asks for the NDEF app. Flick registers the standard NDEF AID, so any phone that reads tags will knock.
The watch hands over a capability container, then one NDEF file built from whatever preset is armed, snapshotted so a switch can't tear a message.
Nothing armed? It says "file not found". The watch simply isn't a tag until you want it to be.
What their phone does.
| Android, unlocked | Opens the link right away |
| iPhone XS or newer | Shows a banner; tap it |
| Contact card, Android | "Add contact" sheet |
| Contact card, iPhone | Ignored, iOS doesn't open vCards from tags |
| Where to hold it | Watch face flat on the phone's NFC spot: middle of the back on Android, top edge on iPhone |
Set it up.
Two pieces: a tiny editor server on any always-on Linux box, and the watch app.
The editor
# server/flick.env: FLICK_KEY=..., PORT=8480 scp server/flick.py server/editor.html \ server/flick.env box:~/flick/ scp server/systemd/flick.service \ box:~/.config/systemd/user/ ssh box 'systemctl --user enable --now flick' # then open http://box:8480/#k=FLICK_KEY once
The watch
cp flick.properties.example flick.properties
# set server.key = FLICK_KEY
./gradlew :app:assembleRelease
adb install -r app/build/outputs/apk/release/app-release.apk
adb shell cmd package compile -m speed \
-f com.rusty.flick