Repository navigation
Creatures and Rewards
Each child can have a creature: a drawn dragon, unicorn, T-Rex, princess or one of the other species, which hatches from an egg and grows as the child does their tasks. A child's task points also buy rewards the parents choose ("an hour of Minecraft for 50 points"). Neither needs the Pocket Money plugin: a family that never uses pocket money can still give a child a creature and run rewards.
Until v1.13 the creature and the rewards were part of Pocket Money. Since RFC-017 they are their own thing; pocket money keeps the euros (allowance, interest, goals, withdrawals). For a family that used them before, nothing looks different: every child who had a pocket-money avatar has the same creature, at the same stage, in the same look.
Settings → Creatures & rewards (Kreaturen & Belohnungen, Créatures et récompenses), behind the settings PIN like all settings. Every child in the family has a card with a switch.
- On. A child who never had a creature picks one first: every species is shown with its eight stages. It starts as an egg.
- Off. The creature disappears from the child's screens, but nothing is deleted. Switching it back on brings back the same creature, at the same stage, in the same look.
A child without a creature sees nothing of it. Mark a family member as a child under Settings → People first.
Per child, with the creature on:
| Setting | What it does |
|---|---|
| Creature → Change | Another species. The stage, the style and the look stay. |
| Grows with | Task points (the default): it grows with every point the child earns and never shrinks, even when points are spent. Saved money: it grows with the money in the child's pocket-money account, as the pocket-money avatar always did. Offered only with the Pocket Money plugin on and an account for that child. |
| Shop | Lets the child buy things for their creature with their points, on their Rewards page (see The shop below). Off hides the shop; what was bought stays the child's and stays on. Below the switch is the list of what the child bought, with the dates. |
| Look | The drawing style. The child can change it on their own page too, with no PIN. |
The stages, the look editor and the cheering when a task is ticked off are described on the Pocket Money page (Avatar evolution, Avatar style, Points instead of euros); they work the same for every creature.
| Where | What |
|---|---|
| Creatures widget on the dashboard | Every child's creature side by side: the child's name, the stage (with the creature's own name if it has one) and what they have to spend -- their points, or the money saved for a creature that grows with money. Tap a creature for that child's Rewards page. Switch it on under Settings → Widgets (Creatures); it is off by default. With no creature switched on yet it says where creatures come from. From three children on it takes two columns of the dashboard. |
Rewards page (/rewards) |
One child at a time, picked at the top. The creature, large: tap it and it hops; Change look; its stage and a bar to the next one (tap it for all the stages); the child's points and anything they owe; the family's rewards to redeem, with the requests still waiting. Works for a child without a pocket-money account. /rewards?child=<person id> opens a child's tab directly. |
| Navigation | Rewards (Belohnungen, Récompenses) appears once a child in the family has a creature switched on, and its badge counts the requests waiting for a parent. Hide it on a device under Settings → Navigation like any other item. |
| Tasks page | Each child's creature, small, beside their name and points; it cheers when one of their tasks is ticked off. Only for children with a creature. |
| A child's profile (tap them on the dashboard) | The creature, the points to spend and To the rewards. |
| Pocket money page and widget | Unchanged: the creature next to the money, for families who use both. |
On the dashboard, the tasks page and the profile the creatures stand still -- a wall display's Raspberry Pi has nothing to redraw -- and move only for the second and a half they cheer. They are sleepy at night and happy once the day's tasks are done.
Under Settings → Devices each device has Belongs to: the family (the default) or a person. A device that belongs to a child with a creature opens on that child's Rewards page instead of the dashboard: when the app starts, is reloaded or is opened from the home screen. Home in the navigation still goes to the dashboard, so the rest of Kinboard is one tap away. A device marked as a kiosk ignores it and always opens on the dashboard -- it is the family's screen, whoever it was set up for.
Setting it is a parent's choice, behind the settings PIN; Kinboard's server checks the PIN too, so a child's phone can't make itself someone else's.
Tasks and rewards pick their icon from one emoji picker: every emoji except flags (Windows draws flags as two letters). Search in the screen's language or in English -- "Eis", "glace" and "ice" all find 🍦 -- or browse by category; the emoji picked last on this device come first, and a skin tone chosen once is remembered on the device. Kinboard checks on the server that an icon is exactly one emoji. A reward whose icon was typed as text before the picker keeps it until someone picks a new one.
A child's points balance is the points their tasks have earned, all time, minus the rewards a parent has approved. It belongs to the child, not to a pocket-money account, and it never shows less than zero. A request that is still waiting is held back.
The catalogue is on the same settings page: a title, a cost from 1 to 10000 points, an optional emoji from the picker and an Active switch. It is shared by every child in the family.
Redeeming. A child with a creature sees their points and the rewards on the Rewards page and taps Redeem. That only asks: the request waits under Rewards waiting for approval on Settings → Creatures & rewards and on the navigation badge. Approve spends the points, Deny spends nothing. Both need the settings PIN, checked on the server too, so a child's own screen can't approve its own request. Two screens approving at once book it once, and an approval the points no longer cover is refused while the request keeps waiting.
On the Rewards page, under the rewards, a child whose shop is on can spend points on things for their creature (Shop, Boutique). Nineteen items in four places:
| Place | Items and prices (points) |
|---|---|
| Hats & more | Cap 25, wizard hat 40, pirate hat 40, headphones 30, flower crown 35, space helmet 60 |
| Glasses | Heart glasses 20, monocle 25, star glasses 30 |
| Around the neck | Scarf 20, bow tie 20, medal 35, cape 45 |
| Backgrounds | Starry sky 60, forest 70, snow 70, rainbow 80, beach 80, outer space 120 |
- Each card shows the child's own creature with the item on, in its own style. Buy asks once and then spends the points straight away: no PIN, it's the child's own choice. The shop only sells what the child can afford, holding back rewards still waiting for a parent, and each item only once.
- An item bought is the child's for good. Wear puts it on, Take off takes it off; Change look offers the bought items too. One item per place: a hat from the shop replaces the free bow, party hat or flower (and the crown at the top stage, until it's taken off), shop glasses replace the free sunglasses.
- Hats and glasses show from the hatchling on, neckwear once the creature is out of its shell; an egg wears only a background (the shop's cards show every item on a grown creature either way). Backgrounds sit behind the creature in a rounded frame. A creature shown as its classic picture changes to its Gumdrop drawing when something is put on, as with Change look. The astronaut, the plant and the wizard, which aren't drawn yet, have no shop.
- Buying never shrinks a creature: it grows with the points earned, and a purchase only lowers what's left to spend. The balance is earned minus approved rewards minus purchases.
- A parent turns the shop off per child under Settings → Creatures & rewards. The shop disappears from the Rewards page; anything bought stays on, and the child can still take it off or put it back on under Change look.
- Refunds are a parent's. The same page lists what each child bought, with the dates, and Refund (settings PIN) gives the points back and takes the item off if it's being worn. The item leaves the list and can be bought again later. For the child, what they buy stays theirs: only a parent can refund.
Home Assistant (the points balance, creature stage and reward requests sensors, and the kinboard.request_reward action) and a connected assistant (get_rewards, request_reward) see each child's points and creature stage, the rewards and what is waiting, and can ask for a reward. Asking is the same as the child tapping Redeem: it waits for a parent and the PIN, and nothing outside the family's screens can approve it. The creature's name and look are never sent out.
Who is told. A new request pushes the family's phones -- every device except wall displays (kiosks) and those that belong to a child -- with "Mia would like 🎮 An hour of Minecraft (50 ⭐)"; a tap opens the requests at the top of Settings → Creatures & rewards. An answer pushes the child's own device, if one belongs to them. Quiet hours apply, and each device has a Reward requests switch in Settings → Notifications.
- The data lives in the
creaturestable, one row per child that has one (person_id,species,style,look,best_tier,last_seen_tier,grows_with,shop_enabled,enabled). Reward requests (point_redemptions) belong to a person;account_idstays, nullable, for one release. - The migration is
webapp/docker/migration_zzzzzzzz_pocket_money_creatures_out.sql. It applies on start like every migration and gives every child who has a pocket-money account a creature with their account's species, style, look and stage, growing with points if the account was in points mode and with money otherwise. It does this once, when it creates the table. -
creaturesstreams live, so restart realtime once after upgrading:docker restart kinboard-realtime, ordocker compose restart realtimewith the-ffiles you normally use. Until then a creature switched on or changed on one screen shows on another only when that screen reloads. - Screens only read
creatures; every write goes through Kinboard's server (/api/creatures,/api/rewards), which checks the settings PIN for a parent's choices. - A rollback to v1.13.0-rc.13 keeps working: the old pocket-money columns are still there, unchanged since the upgrade, and a trigger keeps reward requests readable per account. What changes while rolled back (a new account, a mode or style change) stays on the account and is not carried over to the creature on the next upgrade.
- In a family with the Pocket Money plugin switched off, the migration keeps each child's creature but leaves it switched off; grown-ups with an account get none.
- A family backup carries the creatures and the requests. Restoring a backup from before this release gives each child the creature their pocket-money account had, by the same rule as the migration.
- The reward pushes are
reward_requestedandreward_decidedrows inscheduled_notifications, sent by the usualprocess-notificationsjob. Each device's switch isnotification_preferences.reward_requests(default on), added bywebapp/docker/migration_zzzzzzzz_reward_notifications.sql; nothing new streams. - The Integration API has
GET /api/integration/v1/rewards(family:read) andPOST /api/integration/v1/rewards/requests(pocket_money:write);webapp/openapi/integration-v1.yamldocuments both. -
Who a device belongs to is
devices.person_id(nullable, cleared when the person is deleted), added bywebapp/docker/migration_zzzzzzzzz_device_owner.sql. Only the server writes it (PATCH /api/devices/<id>, settings PIN): the migration narrows the browser roles' INSERT and UPDATE ondevicesto every other column. Nothing new streams, so no realtime restart is needed for it. -
The shop (
webapp/docker/migration_zzzzzzzzz_point_purchases.sql) addspoint_purchases(one row per item a child owns:person_id,item_id,cost,created_at) andpurchase_person_point_item(), which buys under the same per-child lock as reward requests and approvals.point_person_totals()keeps its name and arguments and gains apurchasedamount; itsbalancenow subtracts purchases, and reward requests and approvals check that balance. The catalogue and its prices live in Kinboard's code (webapp/src/lib/pocket-money/creatures/shop.ts); the item ids are stable and stored in the creature'slook(head,face,neck,background). Screens only read the table; buying isPOST /api/creatures/<person id>/purchases(no PIN), a refund isDELETE /api/creatures/purchases/<purchase id>(settings PIN;refund_person_point_purchase()deletes the row and takes the item out of the look, under the same lock), wearing is the creature's look, which the server accepts only with owned items.point_purchasesstreams live, so restart realtime once after upgrading (docker restart kinboard-realtime); until then a purchase shows on the child's other screens only after a reload. Backups carry the purchases. A rollback to rc.15 forgets the purchases in the balance: while rolled back the children get those points back, the rows stay, and they count again after the next upgrade -- so points spent on rewards in between can show as still to make up. A backup made on rc.15 has no purchases, so restoring it drops the worn shop items. - The emoji picker's names and keywords (Unicode CLDR, via the pinned
emojibase-data, MIT) are generated intowebapp/src/lib/emoji/bynode scripts/generate-emoji-data.mjsand loaded from Kinboard itself, only when a picker opens: no CDN, so it works offline. Emoji newer than Unicode 15.0 are left out, since a Raspberry Pi's emoji font can't draw them yet.
Kinboard on GitHub · Sponsor · Buy me a coffee · Report a bug · Free for noncommercial use
Getting started
Operations
Integrations
AI assistants
- Overview & quick start
- Connecting
- What they can do
- Permissions & safety
- Troubleshooting
- Self-hosting notes
Kiosk hardware
Built-in features
- Dashboard
- Calendar
- Shopping
- Recipes & meal planning
- Tasks & todos
- Notes
- Messages
- Timers
- Photos
- News
- Birthdays
- School schedule
- Smart home & energy
- Screensaver
- People & devices
- Recycle bin
- Creatures & rewards
- Notifications
- Themes
Plugins (per-family on/off)
Contributing