Bitsy Calendar

A calendar for a five-year-old who moves between houses.

Not a family calendar with a child-friendly skin on it. The child is the primary user and the adults' view is the secondary one, which is the reverse of every co-parenting app on the market. It works unchanged for a child who lives in one house with a schedule too busy to hold in her head.

Kid-first Self-hosted In development
Get in touch
Overview

The reader cannot read. Yet.

Co-parenting apps are built for the adults. The child appears in them as a subject: a name on a schedule, a row in somebody else's week. Bitsy inverts that. The screen she opens is the product, and the parent view is the one that had to fit around it.

Which means the interface cannot rely on reading. Time is counted in sleeps, never dates. Every pictogram renders with its one canonical word beneath it, lowercase, at a size worth reading, because that pairing is how she learns to read it. The words are not labels for adults. They are the point.

The eclipse at the centre of the screen is one segment per night, filled in the colour of the house she sleeps at. The colour change around the ring answers when do I go? before a single number is read. The arc is one colour for a while and then it is the other, and where it turns is when she goes. A child who cannot count past three can see that.

Stages

This app has an ending.

It is not a children's app she will one day stop opening. It is a calendar that starts as pictures and sleeps and gradually becomes an ordinary one, at which point she is simply a person with a calendar. Every difference between kid mode and a normal calendar is a scaffold with a removal date.

sleeps  roughly 4 to 6
Pictures and words, nights only. No dates anywhere. Counts to ten.
days  roughly 6 to 8
Weekdays get their names. A week visible at once. She can add things herself.
dates  roughly 8 to 11
Real dates, a month at a time. Pictures become a choice rather than a need.
calendar  11 and up
An ordinary calendar, and her own account. The scaffolding is gone.

Age is the default, never the rule

Children do not read on a schedule. The stage is a setting; her birthday only supplies the default when nobody has set it. It overrides in both directions, so a confident reader moves on early and a child finding it hard is left where she is rather than pushed into month grids by a machine on her birthday.

Two invariants hold across every stage, and the test suite enforces both: capabilities only grow, and scaffolds only fall away. A later stage may never offer less than an earlier one. A child must never experience this app taking something away from her as she gets older.

House rules

The child is not a messenger.

Two adults who may disagree both write to this, and a child reads it. That single fact decides most of the architecture.

Nothing routes through her
Nothing an adult writes reaches the other adult through her screen, and the app never characterises either of them. She is not a channel, and her calendar is not a place to make a point.
Two houses, and neither is home
Households are peers in the schema, rendered at identical weight, with colours drawn from a palette verified for matched luminance rather than eyeballed. A brighter colour would read as the more important house.
Not custody surveillance
The rotation and its overrides are ground truth for what she needs to know, not evidence for anybody. No adult wins by typing last, and one engaged parent is enough for the app to work.
Her data is hers
The households belong to the child: her houses, her names, her colours. She can take the whole record with her, which is the same promise the app makes on the day the scaffolding comes down.
Built so far

Schema, design system, care engine.

The rotation as ground truth
Households as peers, the rotation and its overrides as the source, and care_nights derived from them. Applied and migrating cleanly against real Postgres.
The care engine
Pure and fully tested. Rotation and overrides resolve into nights, and sleeps are counted from those, including refusing to count when it does not know.
44 pictograms
A generated vocabulary, each glyph paired with the one canonical word that always renders beneath it. Judged by the child rather than by us.
Matched-luminance palette
The design system, with the household colours verified for equal weight rather than picked by eye, because colour is the single most load-bearing signal in the app.
Kid view by default
Parent mode sits behind a PIN. A tablet in the house has no adult session on it, which is what makes it safe to leave lying around.
96 tests
Most of them assert design rules rather than implementation details, so the rules above cannot quietly stop being true.
Status

Early, and honest about it.

Phases one and two are done: the skeleton, the database, the design system and the care engine. The repository layer, the /v1 routes, the real screens, the PIN exchange, the glyph artwork and the deployment do not exist yet. Nothing is deployed and nothing is shippable.

Bitsy Calendar is one of the Locke Werks house apps and the source is private. For access or a conversation about it, write to archon@lockewerks.com.