I continue with my suite of mobile apps for parents:
* https://screenspy.app - observe what youd child is doing on desktop PC. Roblox or homework?
* https://weblock.online - a VERY restricted, whitelist-first mobile browser for kids, use it instead of Safari. I want to feel calm when my children browse the web.
I work on my iOS app - Weblock Browser, a restricted browser for kids with strong parental controls: https://weblock.online
Recently I've added AI classification of websites to determine if a website is safe for a child to visit. If AI disallows a website, you can ask your parent to allow it.
To give AI some context about a website, I used Cloudflare Intel API - it returns domain content categories, very handy to provide them to AI to help it make a decision.
But turns out Cloudflare Intel has a ridiculous limit of 100 requests PER MONTH for non-Enterprise users.
Just launched a restricted browser for kids for iOS: https://weblock.online
Now testing on my kids. The idea is that the browser is whitelist-only, so kids can open only approved websites. I receive a notification when they want to visit an unknown website and I can allow or deny it.
Works great for my family, hope it will be useful for someone else.
How does it work on a more technical level? I would be interested in seeing a bit more tech detail, perhaps because I'm more technical, but also there's so much competition in this space that you need something to differentiate.
For example, is the blocklist UX side Domain based? Company based (Allow all by Google/Alphabet), category based (Search engines)?
And on the backend, is it DNS based or HTTP based? Or maybe an OS hook.
Weblock uses a whitelist, not a blacklist, and it is domain based. Once you allow a domain, it can be browsed by a child. You can allow it forever/15 minutes/1 hour.
How it works: WKWebView, before loading a page, asks the backend if the domain is allowed. If not, it shows "Not allowed" screen and a "Request access" button - child can tap it and you (parent) will get a notification.
So traffic is not going through the backend or a filtering VPN, the app just asks the backend if a page (domain) is allowed to visit.
Visits are logged, so you, as a parent, can see what your child has been browsing. How much time did he spend on a homework website.
Some WKWebView callbacks used for that:
* onShouldStartLoadWithRequest - to intercept a request and check if it's allowed
* onLoadProgress - to show loading progress bar
* onNavigationStateChange - to track browsing history
Also I had to implement a workaround for buggy Screen Time in iOS 26 - even if you add Weblock to "always allowed" apps, iOS will still treat each website as a separate "app" and block it, asking to you "allow' each website on system level. It happens inside WebKit codebase, but luckily this bug has another bug in it - if you re-open a website, it suddenly works and all other websites in this session work tooSo I need to listen to `onScreenTimeBlockingStateChange` event and automatically reload a website if that happens.
Also I added an ad blocker to Weblock. It uses uBlock Origin filters, converts them to WKWebView content rule JSON format and feeds to WKWebView. The app checks the backend if rules are updated and updates a local copy.
What's next: need to get "Default Browser" entitlement from Apple. Then you can block Safari on kid's phone using Screen Time and have Weblock open all HTTP(S) URLs.
App is written in React Native, no performance issues. Backend is Ruby on Rails.
Does it handle ancilliary domains correctly? For example if I allowlist youtube.com, but that also uses youtu.be or cdn.google.com, do resources from those domains get blocked until I specifically allow them?
Didn't get to this detail yet. What the app currently does is allow all resources but block the ones that come from any youtube domain (this will block youtube embeds). Currently this is enough for my kids.
Also I add some relaxing rules, eg: If you navigate to domain A and it redirects you to domain B, do not block B immediately, give it a couple of seconds. It may redirect you back to A and it just wanted to set a cookie on B.
I am adding some gift codes for those who want to check the app but not bother with trial/subscription:
I wanted to know what my kids were doing on the computer: homework or watching youtube shorts, so I built https://screenspy.app to monitor them. Now I’m working on turning it into a product.
I've been using something like Google Family Link, which works fine, except that it ties in to Google Family, along with YouTube, Play Store, Google One. I'd have to kick my sister out of the group to monitor another daughter and it means there's a limit on the number of children you have; such terrible design.
I do want to give them a little privacy and it gets to the appropriate level. Like restricting some apps at certain times, access to chrome but not xhamster. Locking it for certain periods of time and having them request more screen time past 4 hrs/day. Locking the phone whenever they've barricaded themselves in the room the whole morning.
I don't necessarily mind that they're watching YT or TikTok and such. I just want to kick them out of the doom scrolling cycle every now and then.
I'm sure you're doing it with good intentions, but it's a bit sad that children will now grow up with so few rights over their privacy.
As someone who grew up on the internet, I feel that the freedom it gave me to explore the world at my own pace allowed me to develop my personality. The thought that every second of my online life will be logged in an app and accessible to my parents honestly sounds horrible.
I respect every parent's decision regarding how they raise their children, but I invite you to reflect on whether growing up under this level of surveillance is something you would have wanted for yourselves.
I really like this idea of silent monitoring. Monitoring and talking about bad things seen weeks/months later. Because while I can block everything I want at home… there are other kids with free Internet access where everything is available and then I have no idea what’s happening.
Nice one, this looks great. The kids are old enough to work the remote here now so I was looking into how we block certain channels, my surprise when you can’t. Well not without totally gimping your YouTube account on the TV.
When my kids were small, I was fighting with crazy Youtube videos. Kids started with something innocent and soon were watching sick and disturbing pieces.
Giant plastic spiders chasing kids. Momo. Kids behaving silly in front of camera and playing silly games. Kids with masks of superheroes. Something about SCP.
This was (is) Elsa-gate. It was a whole big thing.
Honestly they looked like cartoon shorts that belong on adultswim or something. It's hilarious that they were unironically being watched by kids, but also not.
* https://screenspy.app - observe what youd child is doing on desktop PC. Roblox or homework?
* https://weblock.online - a VERY restricted, whitelist-first mobile browser for kids, use it instead of Safari. I want to feel calm when my children browse the web.