Prep TrackerSign in

Spaced repetition for anything you study

A study partner that remembers for you.

Add what you’re learning — words, formulas, concepts, problems. Each card comes back on the day you’re about to forget it, then again 3, 7, 14, 30 and 60 days later, until it sticks.

The demo needs no account. It runs on sample cards, entirely in your browser.

The Review Queue: today’s due cards across DSA, System Design and AWS, with a progress ring and a streak

How it works

  1. 1

    Add a card

    Something you want to remember, with its answer: a word, a formula, a concept, a problem you solved.

  2. 2

    Review it tomorrow

    Reveal the answer, then grade yourself honestly: Got it, or Struggled.

  3. 3

    Watch the gaps grow

    Each “Got it” pushes the next review further out (1, 3, 7, 14, 30, then 60 days); a struggle brings it back sooner.

Active recall, not rereading

The answer stays hidden until you’ve tried. Reveal it, then grade yourself — and the card is rescheduled on the spot. Timed problems log how long you took.

A review session: a System Design question with its answer revealed and Got it / Struggled buttons

See what’s actually sticking

Recall rate, a study heatmap, how each deck is progressing, and the cards that keep slipping.

The Stats page: recall rate, due count, retained cards, an activity heatmap and the proficiency split

Under the hood

For the engineers reading: what makes it work.

  • Local-first, works offline

    Every screen reads from an in-browser store kept in IndexedDB, so it opens instantly and keeps working without a connection. Installable as a PWA.

  • An offline queue that can’t double-count

    Reviews made offline queue up and replay later. Each carries an idempotency key, so a retried send is recognised instead of counted twice.

  • A schedule derived from history

    A card’s level is replayed from its full attempt history, and each review and its new level commit in one database transaction.

  • Next.js 16 and Turso

    React 19 on the App Router, libSQL/Turso on the server, deployed on AWS Lambda and CloudFront.

  • Tested

    Hundreds of Vitest unit tests, including the scheduler, the sync queue and the routing rules, plus Playwright end-to-end tests.

  • A demo that touches nothing

    The demo runs the real app on generated sample data in its own browser database. Nothing it does can reach a server.

Read the code on GitHub

See it with real-looking data

Three months of reviews across 40 sample cards — due today, overdue, struggling and mastered.

Try the demo
Prep Tracker