-
-
SenseiLoop: short, teacher-led language lessons in a vertical feed, with captions in your language and quick reviews.
-
Follow the teachers you like. For You suggests new lessons, and Following shows the latest from your teachers.
-
Learn one or more languages. Captions are shown in your own language, and the app's language can differ from your device's.
-
Each lesson records the words it teaches. After ten new words, a three-choice quiz checks them and schedules the next review.
-
Free 10 new videos a day, and replays are always free. SenseiLoop Basic, a monthly subscription through RevenueCat, removes the daily limit.
Swipe. Watch. Learn. — Learn Languages with Short Videos on SenseiLoop
Inspiration
Short videos make it easy to start watching, but learning needs a way to return to useful material and practise it. SenseiLoop brings those pieces together: discover a teacher, watch a compact lesson, save it, and come back for a quick review.
What it does
SenseiLoop is a native iOS language-learning app with teacher-led vertical videos, pronunciation, natural example sentences, and synchronized captions. Learners can choose multiple learning languages, follow teachers, like and save lessons, revisit viewing history, and practise vocabulary through review quizzes. The lesson catalogue is internally curated; users cannot upload videos or publish public posts.
The 1.1 release candidate adds an optional SenseiLoop Basic monthly subscription powered by RevenueCat. The free plan is designed around 10 distinct videos per day, with same-day replays free and a clearly disclosed midnight Japan-time reset. Basic removes the daily limit. The quota remains disabled during purchase validation so learners are not blocked before subscriptions are ready.
How we built it
The iOS app uses Swift and SwiftUI. RevenueCat handles product offerings, purchases, and restoration through StoreKit 2. The backend runs on Cloudflare Workers, with D1 for account and learning state and private R2 media storage. Shared TypeScript/OpenAPI contracts generate a Swift API client. Our production lesson pipeline uses Qwen and Seedance.
Billing is intentionally removable: the app depends on a small provider interface, and the backend verifies Apple-signed transactions independently. RevenueCat can later be replaced by a direct StoreKit provider without discarding subscription history.
Challenges and what we learned
The main challenge was making purchase status, account identity, and daily viewing limits agree across cached playback, restoration, and temporary network failures. We use atomic daily-slot admission, preserve signed purchase proofs until the API confirms them, and keep subscription ownership separate from recommendation and learning state.
Another challenge was a dependency that initialized randomness at module load, which Cloudflare Workers rejected. Moving the official Apple verifier initialization into request handling preserved signature verification while resolving startup validation.
Accomplishments
The release candidate passed 57 API, contract, and publisher tests, local iOS tests, signed archive validation, and GitHub CI. Staging and production deployments completed through GitHub Actions, and live smoke checks covered lesson activation, playback grants, subscription state, and rejection of forged Apple notifications. Build 9 has been uploaded to TestFlight. Final on-device purchase validation and App Store review are still pending.
What is next
Complete purchase and restoration validation, publish the RevenueCat-enabled update in Japan and the United States, and tune the free allowance and learning loop using feedback after submission.
Built With
- cloudflare
- revenuecat
- swift
Log in or sign up for Devpost to join the conversation.