Steppy
Walking earns you virtual pets — and every pet gets a room you decorate by hand.

- Platform
- iOS + Android
- Role
- Full-stack mobile developer
- Type
- Client project
- Timeline
- 2026
- Status
- iOS submitted to the App Store · Android via EAS
Steppy turns a daily step goal into a collectible game. The app reads step counts straight from the phone's health platform — HealthKit on iOS, Health Connect on Android — and rewards consistent walking with virtual pets. Hit your goal enough days in a row and a new animal arrives, delivered in a sack the player opens.
Each pet gets its own home, which the player decorates: furniture is dragged into place freely, layered front-to-back, and saved per pet. Pets can be dressed in hats, and rooms re-skinned with wallpapers and floors. Two in-app currencies are earned by walking and spent in the shop, alongside a monthly Seasonal Pack sold as a real in-app purchase.
Around that core sits a full social and progression layer: friends and leaderboards, gift-sending, a daily trivia card, a streak calendar, a world map of walking progress, and push notifications.
What makes the project unusual is how much of it is content, not code. Pets, hats, furniture, wallpapers, categories, seasonal packs and new-player gift bundles are all database-driven and managed from admin screens built into the app itself — so the client adds new content and tunes how every item sits on every animal without a developer or an app-store release.
Key features
Step tracking & progression
- Native health integration on both platforms (HealthKit / Health Connect)
- Background step syncing, so progress updates without opening the app
- Streak-based pet rewards with a calendar showing which day earned which pet
- Daily step goals, milestones, and two earned currencies
Pets & decoration
- Drag-and-drop room decorator with free positioning, depth layering and room boundaries
- Per-pet saved layouts
- Hats with per-species fitting, including flip poses and behind/in-front rendering
- Wallpapers, floors and a categorised furniture catalog
Social
- Friends, leaderboards, and progress comparison
- Gift sending and a gift inbox
- System-wide announcements that can carry a gift with them
- Push notifications
Commerce
- Monthly Seasonal Packs sold as a real in-app purchase (RevenueCat)
- Server-verified delivery — purchases granted by a webhook using a service-role key
- In-app shops for furniture, designs and hats
Onboarding
- New players receive a starter pet paired with a curated furniture gift, presented as an animated housewarming celebration
- A game-style guided tutorial with spotlight coach marks that teaches dragging, tapping and decorating
- Features unlock progressively over a player's first days
Built-in admin tooling
- Visual hat calibration — position, scale and rotate a hat on a pet by touch, then clone that fit across the whole roster
- Pet and furniture scaling tools
- Furniture category manager
- Welcome-gift bundle builder
- Broadcast notifications with attached gifts
The hard parts
The problems that shaped the architecture, and how each one was solved.
Native health data on two very different platforms
HealthKit and Health Connect expose steps in incompatible ways, with different permission models and different background behaviour. Both are wrapped behind one interface, with custom Expo config plugins to inject the native entitlements Expo does not ship.
A gesture-driven room decorator
Furniture is positioned by touch with free-form dragging, depth ordering, and boundaries that hold on any screen size — while the pet itself is independently draggable in the same space.
A content pipeline instead of hardcoded assets
Every cosmetic — pets, hats, furniture, wallpapers, categories, gift bundles — is a database row with an admin screen behind it. Adding a new animal or a seasonal collection is a content task, not a release.
Correctness enforced in the database, not just the app
Access control runs on row-level security policies; anything a client must not be trusted with — granting paid packs, awarding currency — is a SECURITY DEFINER function. Rules like "a pet wears exactly one variant of a hat" are held by partial unique indexes and triggers, so no client can violate them.
Server-verified in-app purchases
A Supabase Edge Function receives RevenueCat's webhook, verifies a shared secret, and grants the pack server-side with a service-role key. The client's own grant path is best-effort only and ownership is confirmed by polling — so a tampered client cannot award itself paid content.
Full landscape support
Every screen except the pet's room reflows for landscape, with safe-area handling for notches and gesture bars that move to the sides when the phone rotates.
Built with
Mobile
Native modules
Animation & interaction
Backend
Payments
Delivery
Inside the app
Tap any screenshot to open it full size.

Ready to bring your
idea to life?
Let's discuss your project and build something exceptional together. Get in touch via Fiverr, WhatsApp, or send me a message.