My daughter got a new set of picture books. Each book came with an audio story and a short song. You had to use a code printed inside the book to unlock them. I have made something similar for her Kids Player three times before. This was the fourth time. It was also the fastest so far. And it had one new, unexpected twist.
What I Needed: A New Bookshelf, The Same Old Problems
The rest of my daughter’s Kids Player already works the way I want it to: You tap a cover to hear a story. There is no autoplay. There are no algorithms. Nothing plays that she did not choose. This new set of picture books deserved the same treatment. But on the vendor’s own web page, everything was set to video by default. Some of it was okay. It was not what I wanted for everything.
Proof: One More Tab, The Same Shape as the Rest
The new tab looks and works just like the other tabs: On the left is a grid of book covers. For each cover, there is a title, a story button, a song audio button, and a song video button. Tapping a cover brings up a full-screen player. There is nothing new to learn. It is not new software, really. It is the same way her other three tabs already work.
There was one real problem: when I first built the tab, the thumbnails loaded slowly. Instead of debugging the new tab from scratch, I copied the loading pattern of an existing tab that was already fast. The slowness went away. Reusing a pattern that worked was better than troubleshooting a new one.
Story: Video Is Not Always Less
One of the first things I made for this app was a rule: pictures instead of autoplay videos. This was because I did not want my three-year-old daughter to get used to constantly watching moving screens. That rule has held true until now.
This tab is the first place I have purposely broken that rule. Story narration stays audio-only, just like everywhere else in the app. Stories work without moving pictures. Keeping them audio means I can fully keep the screen-watching habits I care about. But the songs are short—less than two minutes. And their topics are visual in an important way (this is a number-counting set). So, I let them play as actual videos.
The rule is not “no videos.” It is “videos must earn their spot.” This means they are short. My daughter chooses them herself. And they do not make her scroll to keep watching. Everything else in the tab stays the same as the rest of the app: audio-only where it does not need to be visual, and tapping once pauses it to wait for the next tap.
How: Reuse, And One Tedious Step
Inside, it is the same story as One Engine, Many Apps: I connected a new content domain to the infrastructure I had already built for other tabs. This meant the same thumbnail grid, the same full-screen player, and the same “tap-to-play” pattern.
The really troublesome part was not the app. It was collecting the actual audio and video links, and the cover thumbnails. Each book in the set had a unique code that only linked to that book’s page. There was no single list of everything in the set anywhere. Instead of having my daughter scan a code every time she wanted to listen to a different book, I gathered these scattered links into one page that I could add to the app. This was the tedious part of the project. The tab itself was done almost as soon as I got that list. Doing this type of work for the fourth time is much faster than the first.
A Small Standoff With My AI
The other part I did not plan for was the cover thumbnails. For each of the 42 books, I wanted thumbnails that followed the same ’tap-the-cover’ pattern as her other tabs. The publisher’s own site had clean cover images for all the books.
I asked Claude to get those images for me. Claude replied no. It said those images were not mine to redistribute. It would not help me copy someone else’s covers, even for a private, password-protected family app. I argued a little: no one outside our home would see this. The answer did not change. It would help me make the tab. But it would not help me copy someone else’s images to fill it.
So I did it the slow way. I was already looking at scanners for a sermon OCR project (documented here). My daughter’s growing pile of worksheets and play materials meant we needed a good home printer anyway. In the end, I bought a Canon imageCLASS MF756Cx for 645,000 KRW, about $470. This was mainly because it was a model that could actually do clean duplex scans, which was the feature I cared about most. When it arrived, I tested the duplex scan, and it worked on the first try. Then I scanned all 42 covers myself from the books we owned and saved them to our own NAS.
It was the same end result as asking Claude to get the publisher’s images, except every pixel was legally ours.
As always: this is a private, password-protected app for our family. It is for personal use and holds content from books we own. What I share is the tech: reusing an engine, hiding video behind real reasons, and building a tedious list just once.
TL;DR
- I connected a fourth content domain to the same ’tap-the-cover, no-autoplay’ engine. This was the fastest of the four builds, thanks to reuse.
- “No videos” changed to “videos must earn their spot”: if they are short, chosen, and visually necessary, it is no longer a blanket ban.
- The hardest part was not the app. It was making a single list of links that did not exist anywhere else and getting the thumbnail covers.
- When a new tab loads slowly, check if an existing fast tab solved the problem before debugging from scratch.