HAP
All work01 / 09

Full-Stack & Mobile

ZenCub — Native iOS App

ZenCub turns Brazilian Jiu-Jitsu instructional videos into clean, structured 'recipe cards' — step-by-step technique breakdowns generated by AI. Paste a YouTube, TikTok, or Instagram link and get an organized walkthrough you can actually study from. We designed and built the product end to end, from the native iOS app to the backend that does the heavy lifting.

Stack

iOSNext.jsTypeScriptSupabaseAnthropicOpenAIStripe

Concepts

Native iOSAI video understandingSubscriptions & IAPPush notificationsFull-stack product

How it works

The whole flow, traced from your first tap.

iOS · SwiftUIRailway · Next.jsSupabaseAI pipeline
  1. 01

    iOS · SwiftUI

    Sign in

    Auth runs through the official supabase-swift SDK. We subscribe to the SDK's auth-state stream and mirror the session into an @Observable store, so every screen reacts the instant you sign in or out — no manual refresh, no stale UI.

    supabase-swiftMagic linkGoogle OAuth
  2. 02

    iOS · Share Extension

    Add a video — paste it, or share it straight from YouTube, TikTok, or Instagram

    A share-sheet extension lets you import without ever opening the app — it fires the request as the signed-in user through an App Group bridge. Our URL parser tames the messy real world: shorts, reels, youtu.be, vm.tiktok short links and tracking junk all resolve to the right video.

    Share ExtensionApp GroupsVideoURLParser
  3. 03

    Railway · Next.js API

    Kick off the import

    Before spending anything, a preflight call pulls the title, thumbnail, and platform and warns you if it's already saved. One POST then starts analysis and returns a job id — credits are checked server-side, and an in-flight import can be cancelled with an automatic refund.

    RESTSupabase JWTServer-side credits
  4. 04

    Supabase Realtime

    Watch it work, live

    The app subscribes to your job's row over Supabase Realtime and streams a four-step checklist — Fetching → Transcribing → Reading the technique → Saving. If realtime ever drops, it silently falls back to polling so you're never stuck staring at a frozen screen.

    Postgres realtimePolling fallback
  5. 05

    AI pipeline

    AI breaks down the technique

    The pipeline transcribes the video's audio and uses AI to extract a clean, structured, step-by-step technique card — turning a long instructional clip into something you can actually study from.

    Speech-to-textLLM extractionStructured output
  6. 06

    iOS · SwiftUI + Supabase

    It's in your library

    The finished technique lands in your Library and Stacks. A stale-while-revalidate query cache makes everything open instantly while fresh data loads in the background — backed by image caching, network-aware retries, and Sentry crash reporting from day one.

    Stale-while-revalidate cacheImage cacheRetrySentry

The problem

BJJ technique is scattered across thousands of hours of video. Finding the one detail you need means scrubbing through long clips, and there's no consistent way to capture, organize, or revisit a technique once you've watched it. Practitioners wanted the substance of a video without re-watching it every time.

What we built

A native iOS app backed by a full web service layer. A user pastes a video link; the backend pulls the video and transcript, and AI converts it into a structured, step-by-step technique breakdown — grips, positions, and key details laid out as a readable card. Users build a personal library of techniques they can search and revisit.

How it works

The pipeline downloads and processes source video, extracts the transcript, and runs it through Anthropic and OpenAI models to produce structured, consistently-formatted output. Everything is stored in Supabase, subscriptions are handled through the App Store with server-side receipt validation, and push notifications keep users engaged with new content.

Outcome

What started as a proof of concept became a working iOS product with paid subscriptions and a real content pipeline — demonstrating the full path from raw video to a polished, monetized native app.

Interested in something similar?

Tell us what you need and we'll figure out how to ship it.

Get in touch