All work
Mobile

BrightLearn — Mobile Learning App

Cross-platform app with offline lessons, adaptive quizzes and an AI tutor — 4.8★ across iOS and Android.

React NativeNode.jsOpenAI
BL
Timeline
5 months to store launch
Team
2 mobile · 1 backend · 1 designer · 1 QA
Platforms
iOS + Android, one codebase
Rating
4.8★ across both stores
01The challenge

BrightLearn came to us with a curriculum, a founder with strong opinions about teaching, and no app. The hard requirement was that it had to work for students who are not online most of the day.

Sector
Education technology
Region
Asia-Pacific
Engagement
Idea to launch, both app stores

The target students share devices and have intermittent, metered connectivity. An app that assumes a live connection is not a slightly worse experience for them — it is unusable. Offline could not be a fallback mode bolted on later; it had to be the default assumption in the data model.

Two more things pulled in opposite directions. The founder wanted adaptive difficulty, which implies a server that knows how every student is doing. And they wanted an AI tutor that answers questions in the student's own words, which implies an LLM call. Neither works offline.

On top of that: a small budget, one codebase for two stores, and a launch date tied to the start of a school term. There was no room for a rewrite halfway through.

02What we built

How the work was actually sequenced

  1. Offline-first data model, decided in week one

    Lessons, quizzes and progress live in a local database and sync when a connection appears. Every write is queued locally with a client-generated id, so a student can finish a whole week of lessons on a train and nothing is lost. Conflict resolution is last-write-wins per field, which is enough when each student owns their own progress.

  2. Adaptive difficulty computed on-device, reconciled on sync

    The difficulty model is small enough to run locally, so quizzes adapt immediately with no round trip. The server recomputes on sync with the full history and can nudge the local model, but it is never in the critical path of answering a question.

  3. An AI tutor grounded in the actual curriculum

    Rather than letting a general model improvise, tutor answers are retrieved from the lesson content the student is working through, then phrased conversationally. Responses are cached per lesson, so common questions are answerable offline after the first time. Out-of-scope questions get an honest 'that's not in this lesson' instead of a confident guess.

  4. One codebase, but native where it mattered

    React Native for effectively all of the UI, with native modules only for background download scheduling, where the platforms genuinely differ. Weekly TestFlight and internal-track builds from the first month, so the founder was using the real app long before launch.

03Results
4.8★Store ratingiOS and Android
5 monthsIdea to both storeshit the term start date
100%Lessons available offlineincluding quizzes and progress
1 codebaseTwo platformsnative modules only for downloads

We came with a vague idea and left with a polished mobile app on both stores. Weekly demos meant zero surprises. We'd hire them again in a heartbeat.

Aiko Tanaka
Founder, BrightLearn
04Stack

Mobile

  • React Native
  • Expo
  • TypeScript
  • SQLite
  • MMKV

Backend

  • Node.js
  • Fastify
  • PostgreSQL
  • Redis

AI

  • OpenAI API
  • Retrieval over lesson content
  • Response caching
Next case study

ShopGrid — Headless Commerce

Web · E-commerce

Got something like this in mind?

Tell us what you're building. We'll come back within one business day with a clear plan and an honest estimate.