Andrew Chase / KidClock

KidClock

An alarm clock for a kid's room, built for the 2018 Meta Portal once unmetaportal has freed it to run plain Android. It wakes gently, keeps the room dark at night, listens for "I'm awake" only while it is supposed to, and never asks anyone to log in to anything. One clock can serve two kids of different ages: it asks how old they are and meets the youngest with pictures.

Half a minute with the clock: the Notebook background with the Marker Stacked look, pink marker digits reading 5 over 06 on a ruled page covered in doodled hearts and tiaras; a tap brings the next quote; holding the time fills a ring and opens the look picker, which swipes through Classic, Bold and Analog and back; a swipe changes the background to the Sky at sunset; a tap on the weather opens the weather page; then night mode, amber on black.
Half a minute with the clock: the Notebook background with the Marker Stacked look, a tap for the next quote, a two-second hold on the time to swipe through looks, a swipe to the Sky at sunset, a tap on the weather, and night mode.

What it does

  • Two-stage mornings. A chosen number of minutes before the alarm, a soft sound plays once, the screen brightens with a green okay-to-wake lamp and the morning's quote appears. Saying "I'm awake" or tapping the button cancels that day's alarm. Otherwise the real alarm rings, ramping up over half a minute.
  • Sounds tuned to the research on waking. Five alarm sounds and five gentle sounds, all synthesized in code: hummable melodies around C5 at 112 BPM rather than mechanical beeps, with a music box, wind chimes, birdsong, a kalimba and a harp for the gentle side. Each has its own volume and a Play button to audition it.
  • Night mode from 8:30 pm to 6:30 am by default: amber digits on black, the screen dimmed as far as it goes, a red moon that turns into a green sun when it is okay to get up. An Always night switch keeps the amber-on-black colours all day at normal brightness.
  • Voice without a cloud. "Snooze", "stop", "off", "I'm up" and "I'm awake" are recognised on the device by Vosk. The microphone opens only while an alarm is ringing or a gentle wake-up is in progress, and the camera is never requested at all.
  • Who is this clock for. Settings opens by asking the kids' ages. The oldest age picks which quotes are drawn. An Early reader switch, on by itself when the youngest is under seven, turns on three picture-first screens, each with its own override: a few easy words ("Keep going.") big over the full quote during the gentle wake-up, what-to-wear and raincoat tiles above the sentences on the weather page, and a big moon and sun on the ring screen with the words small underneath.
  • The ring screen sits on the day's weather sky for everyone, with Snooze and "I'm up!" as two large buttons. "Stop", "off" and "I'm up" end an alarm or a gentle wake-up by voice.
  • Sixteen backgrounds to swipe between: Sky, Ocean, Rainbow, Galaxy, Fireflies, Aurora, Meadow, Doodle Strings (beaded pink strings hung with doodled hearts, swaying), Notebook (a ruled page covered in doodled hearts), Soccer Board (a coach's whiteboard with a pale green pitch, doodled round the edge with balls, boots, goals and jerseys), Stadium (floodlight masts beaming down on a night pitch, a goal with its net), Crab Tank (a hermit crab tank with sand, dishes, shells and driftwood), Night Reef (a reef after dark with swaying weed and bubbles), Stuffies (five plush animals on a star sheet, who swap places each day and wave now and then), Doodle Notebook (a ruled page of rockets, tanks, monsters, dinosaurs and a UFO) and Blueprint (the same figures inked white on blue with labels and a title block).
  • Eighteen looks for the time itself, chosen separately from the background. Hold the time for two seconds and a ring fills under your finger; then swipe sideways through Classic, Bold, Stacked, a real Analog dial for learning to read a clock, Sketch (marker on a paper scrap), Whacky (every digit a different font and tilt), Pixel, Magnets, Tiara (slim serif digits in champagne rose with a fine tiara on the hour), Marker (Caveat digits with a scribbled pink underline), Marker Stacked (the stacked layout in pink marker with doodled tiaras), Jersey (navy numerals with a green shadow and a navy-and-white date pill), Scoreboard (glowing yellow digits on a black panel, the date in red LED capitals), Beach, Bubble (each digit in its own pale blue bubble), Plush (cream digits outlined in brown with a pink felt shadow), Marker Blue and Stencil (Black Ops digits like a part number on a crate), and tap to keep one. Every look has an amber night version.
  • Holiday designs. New Year's Eve, Valentine's Day, St. Patrick's Day, Easter, the Fourth of July, Halloween, Thanksgiving and Christmas each have their own background and lettering, from a witch hat on the hour to a string of fairy lights. Each appears by itself three days before the holiday and goes away the day after, giving the chosen design back. Swiping to another background or look in the meantime counts as a decision and keeps that choice. A switch in Settings turns the whole thing off.
  • A quote a day, six actually. From a library of 260 quotes and bits of advice, each marked with the youngest age it suits, six are drawn each morning for the oldest kid using the clock; tap the quote to see the next one.
  • Weather from Open-Meteo with no key. Tap it for a page written for a kid rather than a meteorologist: how it feels now, where the day is going ("It warms up to 67° this afternoon, which is nice."), whether to pack a raincoat, what to wear ("Wear a hoodie or a light jacket. You can take it off later."), the temperature when leaving for school, at lunch, after school and at bedtime, and the week in a sentence ("Rain tomorrow, then it gets warmer every day. Wednesday is the warmest."). The page is painted for the sky at that moment: sunny, cloudy, rainy, snowy, a thunderstorm or a clear night. Every sentence comes from plain rules, not a language model. It is the only thing in the app that uses the network, and when the network goes away the clock carries on and the forecast quietly disappears rather than going stale.
  • Settings behind a two-second hold on the top-left corner, so stray taps never land in them. Tap the next-alarm line for a plain-language card about that alarm.
Choosing a look: the Sketch look, marker digits reading 1:35 on a torn paper scrap, with a Choose a look banner at the top, chevrons at the edges, and the name Sketch over eight dots at the bottom.
Hold the time, then swipe: the Sketch look, one of eleven, over the Sky background.
The Sky background with the Classic look: a large white 12:20 over a blue gradient with low waves, the date, a small italic quote, the weather in the top-right corner and the next alarm along the bottom.
Sky, which follows the real time of day from sunrise to stars.
The Doodle Strings background with the Tiara look: plum serif digits reading 11:05 with a small gold tiara on the hour, over beaded pink strings hung with doodled hearts.
Doodle Strings, with the Tiara look.
The Halloween design: copper serif digits reading 11:04 with a witch hat on the hour, under a pale moon with a bat, with pumpkin hearts, bat-winged hearts and a cobweb in the corner.
Halloween arrives on its own on October 28 and leaves on November 1.
The Christmas design: white serif digits reading 11:05 under a string of glowing fairy lights, with snow, holly in the corners and candy-cane striped hearts.
Christmas, with its fairy lights and candy-cane hearts.
Gentle wake-up on the Stuffies background: a green lamp, the time, and a frosted card with Keep going in large type over the morning's quote, with five plush animals peeking up from the bottom and a button labelled I'm awake.
Gentle wake-up for an early reader: a few easy words over the morning's quote, and the "I'm awake" button.
The ring screen on a sunny sky: Time to get up in a pill, a large 3:21 PM, a dark card with a moon and Snooze, 9 more minutes, and a yellow card with a sun and I'm up!, turns the alarm off, with a listening hint along the bottom.
The ring screen: a moon to snooze, a sun to get up, on the day's weather sky.
The Stuffies background with the Plush look: cream digits reading 3:21 outlined in brown with a pink felt shadow, over a star-print sheet, with a spotted fawn, a red panda, an elephant, a small fawn and a puppy sitting along the bottom.
Stuffies, drawn from a daughter's own stuffed animals, with the Plush look.
The Soccer Board background with the Jersey look: navy digits reading 3:21 with a green shadow over a coach's whiteboard with a pale green pitch, X-and-O plays and doodled balls, boots, goals, whistles, cones, trophies and jerseys round the edge.
Soccer Board, a coach's whiteboard, with the Jersey look.
The Stadium background with the Scoreboard look: glowing yellow 3:21 on a black scoreboard with the date in red capitals, floodlight masts beaming down from each side, a goal with its net on the grass and a ball in the corner.
Stadium at night, with the Scoreboard look.
The Crab Tank background with the Beach look: rounded navy digits reading 3:21 over a pale sky and sand, with a purple hermit crab in a spiral shell, a plant, dishes, shells and a driftwood hide.
Crab Tank, for a house with a pet hermit crab, with the Beach look.
The Night Reef background with the Bubble look: each digit of 3:21 in its own pale blue bubble over a deep blue sea with a moon, bubbles, green weed and a small hermit crab on the floor.
Night Reef, with the Bubble look.
The Doodle Notebook background with the Marker Blue look: blue marker digits reading 3:21 on a ruled page covered in doodles of a rocket, a tank, monsters, a dragon, a race car, a UFO, a volcano, a robot, a shark and a submarine, with BOOM!, RAWR and zoom! scrawled between them.
Doodle Notebook, with the Marker Blue look.
The Blueprint background with the Stencil look: white stencil digits reading 3:21 on blue graph paper, with labelled white line figures of a rocket, a tank, a monster, a robot, a T-rex and a UFO, and a title block in the corner reading KidClock Room Clock.
Blueprint, the same figures as engineering drawings, with the Stencil look.
The weather page for an early reader: a sunny sky, a large 74° marked nice, a T-shirt tile and a No raincoat tile with icons, the sentences It cools down to 44° tonight and No rain today, and cards for the rest of the day and the week.
The weather page with picture tiles on, for a kid who is still learning to read.
Night mode: dim amber 9:34 AM on black with a small red crescent moon in the corner.
Night mode, as dark as the panel will go.
The Analog look: a large white dial with a sweeping red second hand on the Sky background, beside the digital time, the date and the quote.
The Analog look, for learning to read a clock.
The Aurora background: white digits over green and violet curtains of light above dark mountains.
Aurora, one of the nine backgrounds.
The Magnets look: each digit of 1:38 on its own tilted coloured tile, PM on a purple one, the date on a white tile.
Magnets: fridge tiles.
The Whacky look: 1:40 with every digit in a different font, colour and tilt, shadows falling upward, PM in a balloon, the date riding a wave and a pink and yellow checkerboard floor.
Whacky, for mornings that need it.
The weather page on a sunny evening: a blue sky with a sun in the corner and a cloud, a large 60° marked cool, the sentences Sunny now then clear tonight, It cools down to 49° tonight and No rain today, a card saying Wear long sleeves, and cards for the rest of the day and the week.
Tap the weather: a page for a kid, painted for the sky right now.
Settings: an Add alarm button and a column of cards, the first asking who the clock is for with youngest and oldest age steppers, an Early reader switch and three switches under it, then Night and Sounds cards.
Settings: who the clock is for, then alarms, night window, sounds and the rest in cards.

How to install

You need a Portal that has been through unmetaportal, so that it runs ordinary Android apps and you can reach it with adb, and a computer with the Android platform tools. Nothing here needs root, and nothing is irreversible: unmetaportal's disable script puts the launcher back.

  1. Download kidclock-<version>.apk from the latest release.
  2. Install it and grant the microphone:
    adb install -r -g kidclock-0.5.apk
    adb shell pm grant com.acechase.kidclock android.permission.RECORD_AUDIO
  3. Make it the home screen and lock it in:
    ~/unmetaportal/tools/portal-kiosk-enable.sh \
      --component com.acechase.kidclock/.ClockActivity --set-home --yes
    adb shell dumpsys deviceidle whitelist +com.acechase.kidclock
  4. Hold the top-left corner of the clock for two seconds to open Settings. Say how old the kids are, add an alarm, choose sounds and volumes, set the weather location, then unplug the cable. The clock comes back on its own after a power cut or reboot.
  5. Swipe to pick a background. Hold the time for two seconds, then swipe, to pick a look. Holiday designs take over by themselves for a few days around each holiday.

The APK is about 80 MB because it bundles the offline speech model. It is signed with an Android debug key, so to replace it with a build of your own you uninstall first or build with the same keystore.

Make it your own

The repository is MIT licensed and small: Kotlin, no Play Services, no third-party UI libraries. Backgrounds and looks are single Canvas classes each, sounds are a few dozen lines of additive synthesis each, and the quote library is one JSON file. The README covers building, deploying and the handful of device quirks worth knowing. A JDK 17 and an Android SDK are all it takes.

Privacy

No accounts, no analytics, no camera permission. The microphone is used only while an alarm is ringing or a gentle wake-up is in progress, speech is recognised on the device and nothing is recorded. The only network traffic is an optional weather forecast from Open-Meteo for a location you type in (or, until you do, a coarse guess from your IP address).