Inspiration
Step counters give you a number and a ring. Close the ring and that's it. I wanted a walk to feel like a small adventure, with a friend who is glad to see you come home. So I made Chonky, a round corgi who packs a loaf of bread and heads out with you every day.
What it does
Chonky Corgo turns your daily steps into a pixel RPG.
- Walk and battle. Your steps from Apple Health charge Paw Power. Each full charge is an attack on today's monster, and elemental matchups change how hard it lands. Beat it for Coins, chests and keepsakes, and fill the Monster Journal.
- A story that moves at your pace. You pick your own daily goal, and every finished goal moves the story forward by the same amount. A 3,000-step walker and a 10,000-step walker travel the same eight regions together. Rest days are safe.
- Costumes with skills. Outfits work like classes. Bread Hunter's Keen Nose finds an extra drop; others add goal Coins or soften a missed day.
- Walk quests. Pick Find Lunch, Deliver Mail or Reach Camp and follow it on your Lock Screen and in the Dynamic Island.
- A home for Chonky. Decorate rooms, adopt companion pets, collect outfits and portraits, and take pictures in Photo mode.
- Walk together (2.0.0). Start or join a Pack of up to 6. Your combined steps hit a daily Team Battle boss, and you race each other in the Daily Dash. Add friends by code and compare steps on friend, Pack and global leaderboards. Invite links open an App Clip, and when your friend joins and walks, you both get 500 Coins.
- Apple Watch and widgets. Chonky walks with you on Apple Watch. Trail Walk tracks steps, distance and time and saves an Outdoor Walk workout. Widgets and complications keep today's progress close.
Apple Health is optional (Manual Walk works without it), and the solo adventure needs no account.
How I built it
- iOS: Swift and SwiftUI, with HealthKit, WidgetKit, ActivityKit (Live Activities), a watchOS app, an App Clip, Sign in with Apple and App Attest.
- Game rules: a versioned rulebook with a fingerprint per version. Each save is a command log in SQLite that replays on open and refuses to load if the rules drift, so a new release can never quietly change an old player's progress.
- Money: the RevenueCat SDK runs Chonky Club (monthly and yearly), five permanent playsets, No Banner Ads and Gem packs. Entitlements come from RevenueCat, and RevenueCat webhooks keep the backend wallet in sync. The optional rewarded ad goes through RevenueCat's AdMob adapter with server-side reward verification.
- Backend: Next.js, TypeScript, Prisma and PostgreSQL. Every release goes to a staging copy first and has to pass a 78-check smoke run before production. App Attest checks that step contributions to Team Battle and leaderboards come from the real app.
- Art and sound: pixel art throughout, 36 scene paintings that change with the time of day, and celebration sprites drawn frame by frame. There are no audio files: every sound is synthesized in the app.
Challenges I ran into
- App Review. The first build was rejected because the Club and Library rows only appeared on a player's seventh day, so the reviewer couldn't find the purchases. Lesson learned: never hide the store behind progress. In 2.0.0 every feature is open from the first launch, and walking earns rewards, not access.
- App Attest on real iPhones. My server expected extra authenticator data that only appears when an app is built with the iOS 27 SDK. Every test passed because the test vectors always included it. Real phones never registered a key until I checked the production table, found zero rows and fixed the verifier to accept both shapes.
- Empty Health days. HealthKit returns a "no data" error for a window with no samples. That failed imports and even blocked joining a Pack. Now an empty day is simply zero steps.
- Fair team play. Only Apple Health steps from the iPhone count toward Team Battle, Daily Dash and leaderboards, so a Manual Walk can't carry a team.
Accomplishments that I'm proud of
- Shipped 1.0 on September 15 and a full social update, 2.0.0, two weeks later on September 30.
- Everything in the Shop can be bought without an account. Gems bought signed out wait on the iPhone and move to your wallet when you sign in.
- Accessibility is checked in CI: VoiceOver names, 44 pt touch targets and WCAG AA contrast on the palette. Reduce Motion is respected across the app.
What I learned
Test against the real thing. Synthetic test data said App Attest worked. One look at the production table showed zero registered devices.
What's next
More regions and monsters, seasonal events for Packs, and new Club extras.
Built With
- activitykit
- admob
- app-attest
- app-clips
- healthkit
- next.js
- postgresql
- prisma
- revenuecat
- sign-in-with-apple
- sqlite
- storekit
- swift
- swiftui
- typescript
- watchos
- widgetkit
Log in or sign up for Devpost to join the conversation.