CALLJOE.COBook now with Joe

App

Mahi

Fitness accountability with no excuses. Don't show up, lose your streak. Built for iOS and Android.

App

Mahi

Fitness accountability. No excuses, just results.

The build

Every fitness app tracks workouts. Mahi holds you to them. You post a workout photo every training day, your streak survives; you skip, it dies. No rollovers, no freeze tokens, no gentle nudges. The whole product is built around one behavioural truth: accountability works when it costs something.

Behind the simple rule is a proper social platform: a photo feed, follows and suggested follows, likes, comments, direct messages with message requests, and moderation with blocking and reporting. The streak engine knows your training days from your rest days, so a planned day off never kills a streak, and cheating is blocked at every layer of the stack.

I built Mahi for iOS and Android, product thinking and engineering together, because an accountability app lives or dies on how the pressure feels. Getting lazy? Mahi won't have it.

Role
Product, design, build
Platforms
iOS · Android

Technically engineered.

The decisions that make this build hold up.

  1. 01

    A streak engine that plays fair

    Training days and rest days are modelled per user, so a planned day off never breaks a streak, and skipping a session always does. One post per day is enforced three times over, in the database, in the security rules, and in the app, because an accountability product can't have loopholes.

  2. 02

    Camera-first, failure-proof uploads

    Shutter to feed in one flow, with optimistic streak updates so the app feels instant and automatic cleanup if an upload dies halfway. The moment that matters, proving you showed up, never gets lost to a bad connection.

  3. 03

    A full social layer

    Feed, follows, suggested follows, likes, comments, and direct messages with message requests, plus blocking and reporting. Accountability works better with an audience, so Mahi ships one.

  4. 04

    Privacy as a number

    Location on a post is opt-in per photo, and coordinates are rounded to roughly 110 metres before they ever leave the phone. Your gym, not your doorstep.

The real stack

  1. React Native + Expo

    One codebase for iOS and Android, OTA updates via EAS

  2. TypeScript

    End to end, app to API to database types

  3. Supabase (Postgres)

    Auth, feed, streaks, messaging, storage, realtime

  4. Zustand

    Fourteen focused stores in a strict layered architecture

  5. Edge Functions

    OTP sign-up flow over Resend email

  6. PostHog + Sentry

    Feature flags, analytics, error monitoring

Where my services came in

Book a call

Loading calendar…

No time that suits? Message Joe on WhatsApp or email hello@calljoe.co.

Chat with Joe