Project Story

  • About the project

    • PupTrail is an iPhone and Apple Watch app for dog parents who want to turn everyday walks into lasting memories.
    • It records routes, time, distance, photos, little discoveries, favorite places, achievements, reminders, widgets, and family sharing through iCloud.
    • The project started as a personal tool, then grew into a full local-first pet memory app built around one simple idea: every ordinary walk matters.
  • What inspired me

    • My wife and I often came home late after work. Some nights, we were too tired to take our dog out.
    • One day, I found a white whisker on my dog. It made me realize that our time together is limited.
    • A dog’s life can be thought of as a small number of walks: $$ \text{shared memories} = \sum_{i=1}^{n} \text{ordinary walks}_i $$
    • I wanted to build something that helps me keep those small moments: the grass she loves, the route she takes, the “treasures” she finds, and the places she always wants to revisit.
  • How I built it

    • I built the main app with Swift and SwiftUI for iPhone.
    • I used MapKit and CoreLocation to record walk routes, duration, distance, pauses, and location samples.
    • I used SwiftData, Core Data, and local JSON storage for local-first data persistence.
    • I used Photos and local sandbox storage for walk photos, treasure photos, and health attachments.
    • I used CloudKit Sharing so family members can share the same dog profile and see shared walk memories.
    • I added WidgetKit, ActivityKit, and App Intents for widgets, Live Activities, and quick entry points.
    • I also built a lightweight Apple Watch companion app with WatchConnectivity, so walks can be recorded from the wrist and imported back to the iPhone.
  • What I learned

    • I learned that a pet app should feel light. Dog parents may love their pets deeply, while daily tracking still needs to stay simple.
    • I learned that local-first design matters. A user should be able to use the app without being forced to sign in.
    • I learned that media privacy needs careful boundaries: original photos stay on the device, while shared memories use display copies and metadata.
    • I learned that maps, photos, widgets, sharing, reminders, and Apple Watch support all look simple from the outside, while each one creates edge cases around permissions, sync, battery, and performance.
    • I also learned that the emotional part of the product is just as important as the technical part. The app is less about “tracking exercise” and more about keeping a diary for a dog’s life.
  • Challenges I faced

    • Location accuracy: outdoor routes can contain bad GPS points, long gaps, speed spikes, and paused segments, so I had to build filtering and trusted route analysis.
    • Photo handling: walk photos need to be useful while respecting privacy. The app avoids storing cross-device Photos identifiers and keeps original media local.
    • CloudKit Sharing: sharing the same dog across family members required careful sync, import, retry, and diagnostic logic.
    • Performance: history pages, maps, media previews, widgets, health records, and sharing imports all needed to avoid blocking the main UI.
    • Apple Watch integration: the Watch app records lightweight walk data, then the iPhone remains the source of truth for saving, history, achievements, widgets, and sharing.
    • Product scope: I had to keep saying no to features that would make the app feel heavy, such as social feeds, rankings, chats, or video workflows.
  • Why it matters

    • PupTrail is built for the quiet moments dog parents may want to remember years later.
    • A route, a photo, a favorite place, or a tiny “treasure” may look ordinary today.
    • Over time, those ordinary moments become the story of a dog’s life.

Built With

  • chatgpt
  • chinese
  • codex
  • love
  • puppy
Share this project:

Updates