Pup Play Dates
A dog park social app taken from concept to App Store using contract-driven Claude Code development — 109 documented steps with 1,064 passing tests.
The Product
Pup Play Dates helps dog owners discover parks, connect with other owners through QR codes, and schedule play dates for their dogs. It’s a dog-forward social network where your dog’s profile is the primary identity — owners are secondary.
The app features a hybrid park discovery system that combines real-time Apple Maps data with community-submitted venues verified through a voting system. Users scan QR codes to connect, propose play dates with location and time, manage multi-dog profiles with photos, and earn community trust badges through participation. A freemium subscription model (StoreKit 2) gates premium features like custom QR colors and dog avatar overlays.
Two complete implementations exist: a production iOS app (Swift/SwiftUI) submitted to the App Store, and a cross-platform React Native prototype (TypeScript/Expo) that validated the concept. The iOS version was built entirely through an incremental, contract-driven agentic workflow.


Contract-Driven Development
Pup Play Dates demonstrates a different agentic pattern than the framework-heavy approaches used in Memotive and PropertyHQ. Here, a 535-line CLAUDE.md file served as a master architectural contract that governed every interaction with Claude Code — defining exactly how steps should be proposed, implemented, and verified.
The Step Protocol
Restate the Goal
Every step begins with Claude restating the objective in 1–2 sentences. No ambiguity — if the restatement doesn't match intent, it's caught before any code is written.
Propose a Tiny Plan
An optional 1–3 bullet plan for the implementation. The emphasis is on 'tiny' — each step does exactly one thing, keeping changes small and reviewable.
Implement Only That Step
Claude implements the single step, then outputs: files created/edited (with paths), a short behavior summary, exact verification instructions ('tap X, then Y, verify Z'), and a suggestion for the next smallest step.
Stop and Wait
Claude stops after each step and waits for the next instruction. No runaway implementations. This creates a natural review checkpoint that caught issues early across all 109+ steps.
Architectural Constraints
The CLAUDE.md contract enforced strict architectural boundaries: MVVM with @Observable macro, no third-party dependencies without approval, async/await for all async patterns, @MainActor for thread safety, and SwiftData for persistence. These constraints meant Claude operated within a well-defined design space, producing consistent code across 151 Swift files.
MCP integration with Supabase meant Claude could directly apply migrations, execute SQL, and manage tables — eliminating manual context-switching between the IDE and database console.
What Was Built
Hybrid Park Discovery
Apple Maps integration for real-time park data combined with community-submitted venues. A voting system auto-promotes venues to verified status at 3 confirmations.
QR Code Connections
Generate personalized QR codes with 6 color themes and optional dog avatar overlays (premium). Scan to instantly connect and view each other’s dog profiles.
Play Date Proposals
Create proposals with dog selection, location (from discovered or custom places), date/time, and notes. Multi-dog acceptance, photo attachments, and map integration for meetup details.
Community Trust System
4 badge types across 5 tiers earned through participation — park submissions, venue verifications, play date completions, and profile quality. Builds organic trust in the community.
Offline-First Architecture
SwiftData local persistence with async Supabase sync. Users can browse profiles, view parks, and manage favorites even without connectivity. Changes sync when back online.
Security Hardening
9 audit-driven security items: Keychain integration, CryptoKit encryption, nonce management for OAuth, notification payload validation, input sanitization, and debug print wrapping.


Tech Stack
iOS App
Backend & Security
Test Coverage
With 1,064 tests across 44 test files and 14,511 lines of test code, Pup Play Dates has one of the most comprehensive test suites of any app built with agentic workflows. Tests were written alongside features — not as an afterthought — as part of the step-based development contract.