Summary
Elfmonn Storytime Magic is a storytelling and activity app for families with young children, on iOS and Android. An elf called Chuck reads illustrated stories aloud in the child’s own room, Santa takes a personalised video call and can be visited in a life-size cottage, and there are games, weekly tasks and parent messages built around the same characters. It’s rated 4+ on the App Store, holds five stars on Google Play, and was shortlisted in the Tech/Innovation category of the South Dublin Local Enterprise Awards 2025.
I joined in 2023 as a contractor brought in to expand the games, became CTO and a shareholder in 2024, and have been the sole developer since November 2025. Along the way I took ownership of the entire codebase and rewrote most of it.
The goal
The aim is for stories and play to feel like they’re happening around the child rather than on a screen. Most phone AR puts a small object on a table. Elfmonn uses the same tracking to put the child inside an environment: Santa’s cottage is placed around them at full size, closed on every side so the real room disappears, and they explore it by walking around with the phone. It runs on AR systems, but it’s much closer to a VR experience, and that’s the technical challenge at the heart of the app - building something immersive on a phone, with a phone’s memory, for a child who is going to wave it around.
It’s also meant to get children moving. Most mobile games for kids keep them still and staring at a screen; here they’re up on their feet, walking round a cottage hunting for hidden objects or stepping side to side to steer Santa’s sleigh. The phone is how they see the world, but their body is how they play in it.
It also had to grow from a seasonal Christmas app into something a family would open in June, and it’s built to Google Play’s Families policy, which rules out a lot of things most apps take for granted.
What I built
I built everything visual in the app: the main menu, every scene with Chuck and Santa, StoryTime and the jump into each story. Audio-only mode and the games were my ideas.
A cottage you can walk around. The child points the phone at the floor and taps, and the cottage appears around them, with the child standing in the middle of the room. It’s lit with baked lighting rather than estimated light, which costs memory but keeps it looking like a warm room rather than a model on the carpet. Inside there are milk and cookies, a snowman that grows a snowball at a time, family photos the parent picked in the picture frames, and a 48-piece jigsaw with pieces hidden around both floors. Santa greets the child by name, reads out the parent’s message and falls asleep in his chair.
StoryTime. The most popular part of the app. Chuck sits in the child’s room, opens a 3D book, turns the pages on cue, glances up at the child and lip-syncs to the narration. There are 56 stories so far, with more on the way.
Santa’s call. It works like a real video call: the phone rings, the child answers, and an animated, lip-synced Santa talks to them while their own live front-camera feed sits in the corner, just as it would on a call. The feed stays on the device. The script is built around the child’s name and whatever the parent wants Santa to mention.
Winter Wonderland. In the sleigh chase the child steers by physically stepping side to side with the phone, catching presents thrown from the sleigh ahead. In the scavenger hunt they search Chuck’s cottage against the clock.
Tasks and messages. A parent sets a task for each day of the week, and Chuck reads it out, then praises the child when it’s done. Parents can also type a message for Chuck to speak in his own voice.
Listening at bedtime. Audio-only mode, my idea, lets a story play like a podcast with the phone locked, with lock-screen controls and a sleep timer. Unity isn’t built to keep working once an app is in the background, so the first attempts kept losing their place or ignoring the lock-screen buttons. The answer was to hand playback over to each phone’s own audio player and have Unity follow along, which meant keeping a separate audio version of every story alongside the one the animated StoryTime uses.
Taking over the codebase. The app had been built across a series of separate engagements before I took it on, and the technical debt that builds up that way made every change slower than it should have been. I rewrote most of it with two goals: one cohesive codebase, and a stable base I understood completely. Memory and install size ran through all of it. The Android download came down from about 303 MB to about 193 MB, and the biggest single lesson was that code generation and architecture settings were worth around ten times more than the stripping level.
As CTO I also own the roadmap, keep every build compliant, handle all technical issues and work directly with the CEO on where the product goes next. A free weekly league for children is about to launch.
Technical detail
Unity 6 on URP, with AR Foundation over ARCore and ARKit, from one codebase for both platforms, plus hand-written Java and Objective-C plugins where Unity has no API. Stories are delivered as remote bundles from a CDN rather than shipped in the app, and only one story is held in memory at a time. Subscriptions run through RevenueCat with the paywall configured on the server, and a family can put the app on the TV through Chromecast on Android or AirPlay mirroring on iPhone.
What I took from it
Elfmonn taught me how to take over a project from other developers and gradually make the whole codebase my own. It also moved me from front-end game design into back-end development: native audio, content delivery, subscriptions, store compliance. And as CTO I’ve had more management experience, from working with contractors to making product decisions with the CEO. It’s the project where I learned to own a product end to end, not just the parts of it I enjoy most.