All Projects
iOSSwiftUISupabaseClaude CodeMapKit

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.

109+Steps Shipped
1,064Tests Passing
44Test Files
9Security Items
Overview

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.

PupDates home screen
PupDates parks discovery
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

01

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.

02

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.

03

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.

04

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.

Shipped Features

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.

Play dates screen
PupDates landing
Technology

Tech Stack

iOS App

Swift + SwiftUIiOS 17+, MVVM with @Observable
SwiftDataLocal persistence, offline-first sync
MapKitMKLocalSearch, CoreLocation for distance
AVFoundationQR code scanning and generation
StoreKit 2Subscription tiers, trial logic

Backend & Security

SupabaseAuth, real-time sync, storage, edge functions
CryptoKitEncryption for sensitive local data
KeychainSecure token and credential storage
APNsPush notifications via edge functions
MCP IntegrationDirect Supabase operations from Claude Code
Quality

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.

44Test Files
1,064Tests Passing
14.5KLines of Test Code
25+Services Tested