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
Log in or sign up for Devpost to join the conversation.