BabyPlay
A baby-safe iOS touch canvas app that creates beautiful, colorful visual feedback for curious little fingers. Features parental lock protection and customizable themes.
BabyPlay
BabyPlay is an iOS app designed for babies and toddlers to safely explore cause-and-effect through touch. Every tap creates expanding colorful ripples with gentle sounds, turning the screen into an interactive sensory experience.
NOTE: this app was initially defined by me but the rest of the work was done via AI.
Status
App has completed development, tested in the simulator.
Next steps: test on a phone, deploy to appstore.
The Problem
Handing a phone or tablet to a baby is a common parenting reality, but most apps aren’t designed for tiny, curious fingers. Standard apps have exit buttons, ads, and navigation that babies inevitably find. BabyPlay solves this by creating a full-screen, distraction-free canvas that’s actually designed for how babies interact with screens.
Key Features
Touch Canvas
The main experience is simple: touch the screen, see beautiful things happen. Each touch creates expanding ripple particles with:
- Multi-layered visual effects - Glowing outer rings, gradient-filled centers, and bright focal points
- Smooth animations - Particles expand and fade naturally over 2 seconds
- Multi-touch support - Handles as many simultaneous touches as little hands can make
Sound Feedback
Each touch plays a gentle synthesized tone with pitch that varies based on vertical position on screen. Touch higher = higher pitch. This creates an intuitive musical element that reinforces cause-and-effect learning.
Baby-Safe Color Palettes
Five carefully designed color themes, all tested to avoid seizure-inducing patterns:
- Rainbow - Vibrant but soft primary colors
- Pastels - Gentle pinks, mints, and lavenders
- Ocean - Calming blues and teals
- Forest - Natural greens and earth tones
- Sunset - Warm oranges and corals
Parental Lock
Parents can access settings through a secure unlock flow:
- Biometric authentication - Face ID, Touch ID, or Optic ID
- PIN fallback - 4-digit code for devices without biometrics
- Hidden gesture - Swipe up from bottom edge to access (babies won’t discover it)
- Auto-lock - Configurable timeout to re-lock settings
NOTE: I wanted to find a better way to do a parental lock but my preferred baby proof unlock options were not exposed via Apple’s iOS APIs. Will be interesting to see what other limitations I run into.
Dark Background
The app uses a dark background (#1a1a1a) that’s easier on developing eyes and makes the colorful particles really pop. No harsh white screens.
Technical Highlights
Built with SwiftUI
The entire app is written in Swift using SwiftUI, taking advantage of:
GeometryReaderfor responsive touch positioning@StateObjectfor managing particle and sound state- Custom
UIViewRepresentablefor true multi-touch handling AVAudioEnginefor low-latency sound synthesis
System Gesture Handling
iOS has edge swipes and gestures that babies inevitably trigger. BabyPlay uses:
.defersSystemGestures(on: .all)
.persistentSystemOverlays(.hidden)
.statusBarHidden(true)
This minimizes accidental exits while still allowing parents to access Control Center when needed.
Sound Synthesis
Rather than playing audio files, BabyPlay generates tones in real-time using sine wave synthesis:
let frequency = 220 + (pitch * 660) // A3 to E5 range
A smooth attack-decay envelope prevents clicking artifacts, creating gentle, pleasant tones.
What I Learned
Building BabyPlay taught me about:
- App deployment steps - this is my first exposure to building/publishing an app
- My AI makes it easy - deploying this app was amazingly simple once I was able to download/install Xcode.
- Nano-Banana (NB) is impressive - it was super simple and quick yet effective to use NB to generate the icon art. (Used the Art skill implemented via NB)
What my AI Learned
Building BabyPlay taught me about:
- Multi-touch handling in SwiftUI - Required dropping down to UIKit for proper gesture recognition
- Real-time audio synthesis - AVAudioEngine is powerful but has gotchas around buffer management
- iOS 15-17 compatibility - New APIs like
defersSystemGesturesaren’t available on older iOS versions - Biometric authentication - LocalAuthentication framework makes Face ID/Touch ID surprisingly easy
- Baby UX design - No buttons, no text, no navigation. Just immediate, delightful feedback
Future Ideas
- Haptic patterns - More sophisticated vibration feedback
- Shape modes - Stars, hearts, and other shapes instead of circles
- Recording mode - Save baby’s “artwork” as images or videos
- Apple Watch companion - Let baby play on the watch too?