DEV Community

RunnerY
RunnerY

Posted on

<DAY 3> “Pay-if-you-don’t-run” app by vibe coding ~ Still waiting on Apple Developer Program approval 😤

What I'm Building

I’m building an app with the following concept:

  • Users are asked how much money they want to put at stake for the month, and a payment authorization is set up in advance.
  • Running distance is tracked via HealthKit using an iPhone or Apple Watch.
  • Because money is on the line, users are effectively forced to run.
  • This (hopefully) contributes to improving exercise habits in Japan.
  • If the user fails to reach their self-defined distance goal, the pre-committed money is paid to the operator.

This is based on the concept of commitment in psychology and economics.

A similar app exists overseas called Stickk.


What Went Well

  • HealthKit integration probably works. Let me test it already.
  • The app icon is done.

There isn’t much I can do right now.

Maybe create a public Notion page, or think about marketing strategies.

I haven’t written any tests.

Right — I should write tests.


Status

  • Apple Developer Program: Registered on 1/23, not yet activated
  • App status: MVP is basically complete, waiting for Sign in with Apple

Completed Features

✅ Stripe Payments

  • PaymentSheet integration completed
  • Authorization-only flow using capture_method=manual
  • Successful testing on a real device
  • Fixed PaymentSheet presentation error (handled topmost ViewController)

✅ HealthKit Integration

  • Implemented running data retrieval
  • Added NSHealthShareUsageDescription to Info.plist
  • Successfully authorized and fetched data on a real device

✅ Batch Processing (Edge Functions)

  • process-expired-challenges: evaluates 28-day challenges and handles payments
  • update-progress: updates user progress
  • Deployed to Supabase

✅ GitHub Actions

  • .github/workflows/process-challenges.yml
  • Runs automatically every day at 00:00 UTC
  • Secrets configured (SUPABASE_ANON_KEY)

✅ UI Improvements

  • Countdown display for remaining days/hours
  • Fixed deposit amount display
  • Changed challenge duration from monthly to 28 days

✅ App Store Preparation

  • Privacy policy created (docs/privacy-policy.md)
  • App Store description written (docs/appstore-description.md)
  • App icon set (1024x1024)

Pending Tasks

⏳ Sign in with Apple

  • Blocker: Waiting for Apple Developer Program approval
  • Tasks after approval:
    1. Enable Sign in with Apple in Xcode Capabilities
    2. Implement Supabase Auth integration
    3. Update RLS policies

⏳ Database Persistence Testing

  • Currently blocked by RLS (writes not allowed without authentication)
  • Temporarily testing with a dev user ID

⏳ TestFlight Distribution

  • To be done after Developer Program approval

⏳ App Store Submission

  • To be submitted after all features are implemented and tested

Tech Stack

Category Technology
iOS iOS 17+, SwiftUI
Auth Sign in with Apple (planned)
Database Supabase
Payments Stripe
Activity Data HealthKit
Batch Jobs Supabase Edge Functions
CI/CD GitHub Actions

Key File Changes

1/23

  • StripeAuthorizer.swift – Stripe PaymentSheet integration
  • Challenge.swift – Added stripePaymentIntentId, remaining time calculation
  • ChallengeView.swift – Added countdown UI
  • SupabaseChallengeStore.swift – Dev user ID support
  • Info.plist – Added HealthKit configuration
  • Created and deployed Edge Functions
  • Configured GitHub Actions

1/24

  • StripeAuthorizer.swift – Fixed PaymentSheet presentation issue
    • Updated to retrieve the topmost ViewController

Next Actions

  1. Wait for Developer Program approval (up to 48 hours)
  2. After approval:
    • Implement Sign in with Apple
    • Integrate Supabase Auth
    • Configure RLS policies
    • Distribute via TestFlight
    • Submit to the App Store

Notes

  • Apple Developer Program: $99/year (registered on 1/23)

Top comments (0)