Skip to content
Eeman Adeniran
CV

Case study

Product / Education

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.

Role
Co-Founder & Software Engineer
When
Sep 2025 – Jan 2026
Team
My co-founder and me. I built the first version alone and led the engineering.
Status
V1 live · V2 on hold
Built withNext.js · TypeScript · React · Tailwind CSS · TanStack Query · Zustand · Prisma · PostgreSQL · Better Auth · Vercelmufradaat.vercel.app ↗
Three Mufradaat screens on a phone: the home dashboard with XP, words learnt and cards reviewed, a flashcard showing the Arabic word for house with Again, Hard, Good and Easy buttons, and a page of the Qur’an with known words highlighted.

01

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.

02

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.

03 · Approach

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.

The team

  • Turned a personal tool into the product we released as V1
  • Grew to more than 100 users with barely any advertising

My part

  • 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

04

Architecture

Fig. · Reviewing a card
  1. 01

    Learner People / place

    Reviews flashcards, adds words, reads the Qur’an and studies with groups.

    → Review queue

  2. 02

    Review queue Process

    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

  3. 03

    Next.js server Process

    Server actions receive the queue every five seconds, grouped by deck, and work out when each card is next due.

    → PostgreSQL, Qur’an data

  4. 04

    PostgreSQL Output

    Through Prisma: words, decks, each user’s cards and their schedules, groups, collections, streaks and XP.

  5. 05

    Qur’an data Process

    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.

The Mufradaat home screen: XP, a chart of words learnt over time, cards reviewed this week with a streak, and practice decks.

Home: progress at a glance

A Mufradaat flashcard: the Arabic word for house, its meaning revealed below, and buttons to rate it Again, Hard, Good or Easy.

A flashcard, rated after reveal

Shown with a demo account.

05 · Engineering

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.

06 · Difficulties

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 Mufradaat Qur’an reader showing pages 2 and 3 of the mushaf, with the words the learner already knows highlighted in green.

Words you know, highlighted

A word tapped in the Qur’an reader: a drawer shows the word, its meaning “to them”, and the matching word from the learner’s vocabulary.

Tap a word for its meaning

  • 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.

07

Outcome

V1 grew to more than 100 users, with barely any advertisement efforts.

Mufradaat usage dashboard: 85 total users, 28 active users, charts of users by gender, proficiency level and learning streak, daily active users and daily cards reviewed from mid-November 2025 to late January 2026, and words mastered.
Our usage dashboard in January 2026, when we had 85 users. We passed 100 after it was made.
  • 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.

08

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.

↑↓ to move · ↵ to open