NFC chore system — gamified chores, real hardware, happy kids
A chore system my kids actually use: tap an NFC tag, earn points, chase streaks and bonus quests — ESP32 hardware wired into Home Assistant and a FastAPI backend.
Architecture
What it is
The whole system in one sentence: a kid finishes a chore, taps an NFC tag stuck to the thing they cleaned, and the house announces it while their points tick up on the tablet.
- Hardware — an ESP32 with an PN532 NFC reader mounted in the kitchen; each chore has a cheap passive tag. Tap it when you finish.
- Automation — the scanner reports the tag UID to Home Assistant; one HA automation turns it into a REST call to the backend.
- Backend — FastAPI + SQLite tracks points, escrow, streaks, quests, rewards, and per-kid state. It decides what a scan means and broadcasts the result over a WebSocket.
- Feedback — the kid-facing tablet dashboard updates instantly: points animate, SFX plays, the house speakers announce it.

The game design
Points alone get boring fast — the engagement layer is where the design work lives:
- Bonus quests — one random chore each day earns 2× points. A variable reward the kids race for.
- Ranks — themed tiers that promote as streaks grow (Cadet → Pilot → Commander → Admiral this week).
- Family goals — when everyone completes a chore in a day, the whole house celebrates. Chores become “our thing,” not “my work.”
- Screen-time gate — screens unlock when a chore is done. Rewards are earned from the system instead of negotiated with me.
The numbers
1,137 scans logged over its life; 72 completions / 735 points in the last 30 days. Both kids are mid-quest right now. It has outlived the novelty phase — which is what I’d have bet against before building it.
The full story lives in the blog: I built my kids a chore system that feels like a game — the design brief, the game design decisions, the debugging war stories, and a step-by-step guide to building your own.