Inspiration

I study in Australia. She's back in China. Three hours of time difference. Eight thousand kilometers between us. The best part of each day is sending her a "good night" right before I sleep — it's morning on her side. Every video call, I wish I could just carry her with me. Her nickname is XiaoPi (小屁). It's stuck for eleven years. Six of those were long-distance — through high school, through college, across the ocean. That name has traveled further than I ever have. XiaoPiDaily came from that feeling. I didn't want another chat app. I wanted something on my wrist that makes her feel near. A glance, a smile — like saying "I know you're there, and you know I'm here."

What it does

XiaoPiDaily is a digital companion for iPhone and Apple Watch that lives on your wrist and responds to your real health data. It reads your heart rate, steps, and sleep from HealthKit, calculates a mood, and brings a character to life through 28 Lottie animation states — happy when you're active, worried when you're stressed. You can grow a garden affected by real weather, visit friends' gardens to steal crops, collect skins, set alarms with pet wake animations, and complete daily quests. It turns self-care into a relationship. These all features are my girlfriend's likes.

How we built it

Built entirely with Swift 6, SwiftUI, and SwiftData for iOS 17+ and watchOS 10+. The iPhone is the data hub — it reads HealthKit metrics, runs a rule-based mood engine, and syncs everything to the Watch via WatchConnectivity (40+ message types across 9 categories). The pet renders using Lottie animations with a fully skinnable system — skins are downloadable .zip packages containing 28 animation states. The garden uses WeatherKit for real-time weather effects on crop growth. Social features are powered by Game Center. The Xcode project is generated via XcodeGen with ~28,000 lines of Swift across two platforms sharing a common codebase.

Challenges we ran into

The mood engine. Translating heart rate, HRV, steps, and sleep into something that feels emotionally real — not gimmicky — took countless iterations. Watch connectivity at scale. Syncing 40+ message types bidirectionally while handling disconnections, background app refresh, and file transfers required a robust state machine and exhaustive real-device testing. Watch performance. Running 28 Lottie animations smoothly on a small screen with limited memory demanded aggressive caching and asset optimization. Skin pipeline. Building a complete skin system — discovery, download, validation, extraction, application, and Watch sync — was essentially building a mini app store.

Accomplishments that we're proud of

A two-platform app with real HealthKit integration, a working mood AI, a fully skinnable animation system, a garden with weather-driven growth, a Game Center social layer, and bidirectional Watch-Phone sync — all built in Swift 6 with strict concurrency. It works on real devices. It feels alive.

What we learned

Technology can't shorten distance. But it can make someone feel closer. The most impactful features weren't the most technically complex — they were the ones that made people smile when they looked at their wrist. We also learned that Swift 6's concurrency model catches real data races early, and that SwiftData's undo history and iCloud sync come for free when you design your data layer right.

What's next for xiaopidaily

Custom avatars — let users create their own XiaoPi instead of using preset skins Voice messages from your companion Apple Watch standalone mode — work without the iPhone nearby iCloud sync for garden and pet state across devices More health integrations — mindfulness, blood glucose, nutrition Android Wear support (because not everyone has an Apple Watch)

Built With

Share this project:

Updates