A book you can put on the table.
A four-year-old picks a card off the shelf, puts it on the box, and hears their dad read Where the Wild Things Are. Takes it off, playback stops. Puts it back tomorrow, it carries on where it stopped. No screen, no account, no subscription, no internet.
Commercial versions of this exist and they are good. They are also priced like razor blades: the player is $80–$130 and every story after that is $10–$20, forever, and the catalogue is somebody else’s. The part that does the magic — the chip in the card — costs about twenty cents.
This surface is where that gets designed and built, in the open. Hardware, firmware, the phone-side recording pipeline, and the enclosure. Everything here is either a finished decision with the reasoning attached, or an open question marked as one.
How it works
What it costs
| Toniebox | Yoto Player | tape | |
|---|---|---|---|
| The player | $129.99 | $79.99–$109.99 | ~$45, or ~$56 portable* |
| One more story | $19.99 | $9.99–$14.99 | $0.14 |
| Ten more stories | $199.90 | $99.90+ | $1.40 |
| Who reads it | a voice actor | a voice actor | whoever the child misses |
| Works with no internet | yes | yes | yes |
| Where the recording lives | vendor cloud | vendor cloud | an SD card in your house |
| Still works if the company folds | partly | partly | yes |
* Real parts, now chosen — the bill of materials has every line and what it beat. (Last round this said “~$35”, guessed before choosing anything; the honest figure is higher.) Add ~$14 for a deck of cards and a hundred stickers, which is 14¢ a story.
Where things are
Design record this is the meat
The product architecture, the landscape survey, and every decision with its reason. Read this first — four of the obvious assumptions about this project turn out to be wrong, and it is cheaper to find out here than at the soldering iron.
Hardware chosen & linked
Every part with a checked link to buy it, what it beat and why, the schematic and the power chain, and a live power budget. The check is not “does it return 200” — it is whether the page still says the part’s name.
Record your first story start here
Fifteen minutes, most of it spent reading a book out loud. Written for a parent with a phone, not an engineer with a bench — including how to read aloud for a recording, which matters more than any of the electronics.
Assembly structure only
Eight stages, each ending at a test you can fail, ordered so that a fault is always in the one thing you just changed. The steps wait on a box actually existing.
Firmware specified
What runs on the box: the card-presence state machine, the manifest index, the ingest server, and the audio pipeline behind a swappable output stage.
Studio works today
Record a book in the browser. Runs here for trying out, and ships inside the box so that the recording and the upload share an origin — which they have to.
Cards works today
What is actually on a card, byte by byte, and a writer that puts it there over Web NFC. Every card’s URL lands here, so a card found under the sofa can say what it is.
Simulator works today
The whole box, in a tab. Tap a card, hear it play, press the buttons. The point is to get the interaction wrong here, where being wrong is free.
Where this actually is
| State | ||
|---|---|---|
| Product & site architecture | settled | 18 decisions with their reasons, three of them corrections found before anything was bought |
| Components | chosen | Every line linked and the link verified — not that it returns 200, that the page still says the part’s name |
| Schematic & pin map | done | Generated from code, so the drawing cannot disagree with the firmware |
| Power budget | modelled | ~15 h of stories a charge, ~6 days between them |
| The web half | working | studio, card writer, simulator — all live, all tested |
| Enclosure | 3 routes, none chosen | Waits on one measurement |
| Firmware | not one line | Fully specified, entirely unwritten. This is the long pole and it is honest to say so |
| Anything physical | nothing built | No part has been bought, no joint soldered, no card read |