Case study · EdTech · AI and personalised learning · Our own product
Flashside: a flashcard app
with spaced repetition and an AI coach.
iOS and Android, in the App Store since July 2020, 18 languages. FSRS scheduling, delta sync, and personalised learning AI: a coach that plans the learning, fixes the cards you keep failing, and never answers for you.

- Started
- April 2020
- In the stores
- App Store since July 2020, Google Play
- Languages
- 18
- AI
- Personalised learning: plan, card doctor, quizzes, coach
- Stack
- React Native 0.86, .NET 10, MySQL, Next.js 16
- Model
- Free core, optional Flashside Plus
For six years the app answered the wrong question
A flashcard app has to answer what should I study today. Until 2026, Flashside only answered which deck do you want to open.
Flashside started in April 2020 as a flashcard app, and for its first six years it answered only one question: which deck do you want to open? Without the other one, a learner with 400 cards re-drills cards known cold for a month while the cards on the edge of forgetting wait their turn.
In September 2026 we tested the import against Kaishi 1.5k, an Anki package with 1,501 notes of 14 fields each, 2,971 audio clips and 114 MB of media. Neither the app nor the API knew about audio, note types or Anki before that, and the package had to import whole.
Made early, and everything after follows from them
Cards stay on the device
Cards and study history live on the phone, so the app works without a connection and without an account.
The server is a meeting point
It carries sync and sharing and is not the system of record, so a lost connection loses nothing.
Remembering stays the learner's job
Whatever the AI does, it plans, rewrites and asks. It does not answer for the learner.
One codebase for both phones, an API behind it, a web app beside it
The scheduler is FSRS, the algorithm Anki added in 2023, with a target-retention dial instead of SM-2's fixed ease factors. It is pure arithmetic and runs with the network off.
| Layer | Choice | Why |
|---|---|---|
| App | React Native 0.86 without Expo, one codebase for iOS and Android Native tab bar on iOS, Liquid Glass on iOS 26, Skia drawing, SQLite on the device | Native tab bar on iOS, Liquid Glass on iOS 26, Skia drawing, SQLite on the device |
| API | .NET 10, ASP.NET Core, EF Core 9 on MySQL 8 A modular monolith; the device is the source of truth, the API the meeting point | A modular monolith; the device is the source of truth, the API the meeting point |
| Web | Next.js 16 at flashside.app For the learners who want a keyboard; sharing pages and the admin | For the learners who want a keyboard; sharing pages and the admin |
| Scheduler | FSRS with a target-retention dial Per-card due dates; every grade button says when the card returns, from under a minute to 14 days on a fresh card | Per-card due dates; every grade button says when the card returns, from under a minute to 14 days on a fresh card |
| Sync | Deltas per collection, media four files at a time with retries On iOS the upload runs on a background NSURLSession, which keeps going after the app is suspended | On iOS the upload runs on a background NSURLSession, which keeps going after the app is suspended |
| Storage | A file per collection for the cards, SQLite for the schedule and the review log One row per graded answer, 400 days kept | One row per graded answer, 400 days kept |
What the Anki import forced
Two changes we had not planned. Cards moved out of key-value storage into a file per collection, because Android's SQLite cursor refuses a single row over 2 MB and Kaishi's text alone is 1.3 MB.
And the card became a set of named fields rendered through a layout, with the old two-sided card kept as one layout called basic.
- What the import does not do
- Carry Anki's review history into the scheduler. An imported deck starts fresh.
- Make rich cards with media editable. They stay read-only in the editor for now.
The plan, the grades, the coach




Personalised learning AI on top of the scheduler, with the learning itself free
A study plan from the minutes you have a day, a card doctor for the cards you keep failing, quizzes from your own cards, and a coach card every Monday. The features with a running cost are the subscription; each is marked in the app, and nothing is charged without consent.
Free, for everyone
- Writing and studying cards, offline and without an account
- The study plan from minutes a day and an exam date, exam mode in the last three weeks
- The memory chart and the Monday coach card
- Sync and sharing, with a sign-in
- Import from CSV, Excel, Anki .apkg, a pasted list or a QR code
Flashside Plus
- Card doctor: three rewrites of a card that keeps failing
- Quizzes generated from your own cards
- Import by photographing a page
- Natural read-aloud voices and translation in the composer
- The coach's explanations after a confident error
Six years in eight lines
- 30 April 2020
- First commit.
- July 2020
- Version 1.0 in the App Store.
- 13 August 2026
- FSRS lands; every card gets a due date.
- 9 September 2026
- Kaishi 1.5k import test; cards move to a file per collection, audio and note types arrive.
- 12 October 2026
- Store listing rewritten for 1.49: the plan, exam mode, the card doctor, quizzes, Flashside Plus.
- 16 October 2026
- App Review sends 1.49 back over the missing Terms of Use and Privacy Policy links. 1.50 goes out the same day.
- 19 October 2026
- Android hotfix 1.50.1 on Play's internal track.
- 21 October 2026
- 1.51 in draft in App Store Connect, with this page as its developer website.
An app that has to work offline, or sync without losing anything?
Thirty minutes with the founder. Bring the prototype or the app you already run, under NDA if you prefer. You leave with a recommended way of working together and the reasons for it, and if we are not the right vendor, you hear that too.
Or write below. We reply within 48 hours.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.