Mufradaat
An app for keeping hold of the Arabic words you learn. I built it for fun, a co-founder saw more in it, and the version we released grew to more than 100 users with barely any advertising.
- Co-Founder & Software Engineer
- Sep 2025 – Jan 2026
- My co-founder and me. I built the first version alone and led the engineering.
- V1 live · V2 on hold

Context
Mufradaat started as a simple app to help people hold on to the Arabic vocabulary they learn.
The first version was just a spaced-repetition flashcard system. You added words you had learned, saw them in a list, and practised them. There were no decks; every word sat in one pile.
Problem
Learning a word is the easy part; keeping it is harder. Spaced repetition handles that by bringing each word back at the right time: often while it’s new, less often as it sticks.
From experiment to product
I built it just for fun, and I wasn’t telling anyone about it. Then one day I showed it to the person who became my co-founder. He was fascinated, and said we should chase the idea, so we started turning it into something more serious. Together we built it into what we released as V1.
- Turned a personal tool into the product we released as V1
- Grew to more than 100 users with barely any advertising
- Built the first version on my own
- Architected the full-stack application and designed the Postgres schema
- The spaced-repetition scheduler, and later its replacement
- The review queue that keeps flashcards instant
- The Qur’an reader, and the work to make it fast
Architecture
Reviews flashcards, adds words, reads the Qur’an and studies with groups.
Learner
Reviews flashcards, adds words, reads the Qur’an and studies with groups.
Review queue
Each answer goes into a queue in the browser, saved to local storage, so the next card appears straight away and nothing is lost if the tab closes.
Next.js server
Server actions receive the queue every five seconds, grouped by deck, and work out when each card is next due.
PostgreSQL
Through Prisma: words, decks, each user’s cards and their schedules, groups, collections, streaks and XP.
Qur’an data
All 604 pages of the mushaf, with each word’s translation and lemma, converted ahead of time from SQLite databases into lookups the server reads directly.
It’s a Next.js application in TypeScript, with Prisma over PostgreSQL and Better Auth for email and Google sign-in. Around the flashcards it grew decks, shared collections, study groups that people join with a code, friends, streaks, XP and badges, and daily reminders by push notification.


Scheduling and syncing reviews
The first scheduler was a simple three-box system: get a word right and it moves to a box you review less often, get it wrong and it goes back to the first. I later replaced it with a scheduler closer to Anki’s. New words go through short learning steps (25 minutes, then a day) before graduating; after that, each interval grows by the card’s ease factor; and a lapse sends the word back to relearning and lowers its ease, so it comes back more often.
Every action a learner takes feeds back into the system, so reviewing had to stay responsive. Instead of waiting for the server after each card, answers go into a queue in the browser, and a background worker sends them in batches every five seconds.
Making the Qur’an fast
The app includes the Qur’an as a mushaf, all 604 pages. It highlights the words you already know, by matching each word’s lemma (its base form) against your vocabulary, and you can tap any word to see its meaning and the words from your vocabulary it matches. It was slow at first, and making it fast and responsive took a lot of work.


- The Qur’an text, line layout, translations and lemmas came as SQLite databases. I wrote scripts to convert them ahead of time into lookups keyed by page and word, so building a page is a direct read with no database query
- Each page is built from its line definitions, word ranges that point into the word data, so the layout matches the printed mushaf
- Pages load in a continuous scroll, two at a time, starting before you reach the end of what’s on screen
It’s much faster now than when it started.
Outcome
V1 grew to more than 100 users, with barely any advertisement efforts.

- 28 active users when the dashboard was made
- Daily reviews ran into the hundreds, with peaks above 1,500 cards in a day
- Learners from beginner to advanced, most of them beginners
We never released V2. It’s on hold for now, and we may come back to finish it.
Reflection
Mufradaat showed me that something built for fun can become a product, once someone else sees what it could be. It also taught me that in an app people use every day, speed is part of the product: most of my hardest work went into making things feel instant.