Introducing KidsTube
4 min read

Introducing KidsTube

Introducing KidsTube

tl;dr - I built a YouTube proxy for my kids with parental controls and I'm thinking about how to distribute it for other families to use.

YouTube Kids sucks

A few months ago I grew very frustrated with the YouTube Kids experience. We had banned YouTube completely in our house because of how hard it was to manage. If you're a parent, you've probably experience the same list of problems we ran into:

  • Standard YouTube is filled with videos that aren't safe for kids to watch. So we tried using Youtube Kids.
  • YouTube Kids is not well moderated. Harmful and "weird" content slips through. Anybody remember Elsagate? There are controls to whitelist specific channels and videos for what kids can watch but for some reason these settings are only found in the app version of YouTube Kids and are hard to find.
  • Sometimes there are channels that are wonderful and safe that can't be found on YouTube Kids. There are no controls that allow you to "whitelist" channels or videos outside of YouTube Kids.
  • If a kid wants to watch a video from a channel that's not on YouTube Kids, they can just go to standard YouTube. There's no way to block YouTube traffic on a computer without blocking YouTube Kids since it's on the same domain.

I got frustrated enough that over the last few months, I built what is now known as "KidsTube" in my family. I have 4 kids and it costs between $5 and $8 to run each month. You'll need a custom domain as well but you can easily get one for around $20 a year.

Here's how it works

The site is locked behind a password that is intended for a parent to login with. Once you've logged in, your kid can choose their profile and log in with their PIN.

They are then shown new videos from channels the subscribe to, and new videos across the site. They are also shown how much time is left for them to watch today.

One of my kids has been loving DanCreator!

Kids can also subscribe to channels you have added to your site and perform basic searches for videos.

Parental controls can be accessed at any time from any device. These controls are password-protected so that kids can't change things for themselves. From here it's easy to manage approved channels and kids profiles.

Yes, I have a bug with channel icons 😅

Some technical details

I'm running this on Railway on the Hobby plan which costs a minimum of $5/month. This goes towards your usage though, so if you use less than $5 in usage, your minimum is $5. If you use $7 in usage, you're still only paying $7.

The app is built using Django and Bootstrap. It uses PostgreSQL for the database, Huey for scheduled tasks along with Redis, and Minio for hosting the videos.

Each hour, KidsTube reaches out to check for new videos from whitelisted channels. Metadata for these videos is stored in the database. When a video page is hit, the video is downloaded from YouTube to Minio, then the video is streamed to the browser from Minio. To save on usage costs, these videos are deleted from Minio after a time.

What's coming in the future

There are several features I want to add to make it more useful for kids and parents. Here are just a few in my long list:

  • Adding single videos. Currently you can only add channels.
  • Blocking single videos from an approved channel. I haven't had this happen yet, but I could imagine a scenario where a single video from an approved channel might need blocked.
  • Whitelisting channels/videos per kid. This would be nice based on maturity of each kid.
  • Setup wizard. Upon first startup, have a couple screens that help parents get their site up and running.
  • Suggested channels. I think it would be helpful to have a community curated list of suggested channels that can be easily added from the settings page.

Would you use it?

I'm trying to gauge usefulness for others. This started as a practice in building something for just myself which I find difficult to do. But after mentioning it to a couple other parents, I've found it could be useful for others.

The biggest hurdle is distribution. I can't make this into a paid service because that would violate YouTube's terms of service. It would seem my best path forward in making this easy to get up and running is to create a template in Railway for hosting this so that all parents need to do is create a Railway account, click a couple buttons, enter in a few settings, and then they can be up and running. However, even mentioning hosting your own website to those who are unfamiliar with the process tends to make it seem too difficult to get started.

No matter the distribution method, I'm planning on open-sourcing this soon to get some help building this out. As the saying goes, it takes a village.

I'd be glad to hear suggestions for distribution or any other ideas you may have regarding KidsTube. You can reach out to me at harley[at]hicks[dot]house.