StudyScroll
StudyScroll icon: a golden twenty-sided die with a glowing core

A study engine that makes things stick.

Spaced repetition, active recall, and a little dungeon crawling. Built solo by a kinesiology student who needed to remember an entire degree, and kept polishing until it felt like a game worth opening.

A personal project. No account, no tracking, free.
Live demo

Don't read about it. Answer five cards.

This is the real interaction, running right here on the page. The deck happens to be about why the app works.

Study Science 0 XP
+12 XP

Keyboard works too: 14 to answer, T/F for true or false, Enter for next.

Six ways to run a deck

The same cards, different pressure.

One scheduler underneath, several ways to face it. Each mode exists because a real study week needed it.

⚔️ Dungeon

Your weak cards become the boss fight. Wrong answers hit back.

Tier 4 boss
The Transfer Agent

🧠 Active Recall

Fact cards flip into fill-the-blank. Retrieval, not recognition.

Fill the blank

The runs through the carpal tunnel.

📅 Review Due

Exactly what the scheduler says is due today. Nothing else.

Review due 37

📝 Exam mode

A timed mock exam sampled from your lectures, scored like the real thing.

Mock final
80 questions · 90 min
42:17

🔒 Lock-In

Rewards off, sounds down, timer on. Just you and the cards.

XP · COMBO · STREAK muted

🔥 The long game

A daily-goal streak that only counts days you actually studied.

28 days
Under the hood

Small app. Held to a high bar.

3,889cards across 10 courses
215tests, all green
0accounts required
~1scold load, offline after

Custom spaced-repetition scheduler

An SM-2 style engine tuned for real course rhythms: graduated intervals, lapse handling, and wrong-answer priority that resurfaces what you fumbled.

Sound with zero audio files

Every sound is synthesized at runtime from one A-major pentatonic palette, so any two overlapping tones stay consonant. The whole soundscape ships as code.

Offline-first PWA

Strategy-per-asset service worker, per-course code splitting, and IndexedDB storage. Airplane mode is a supported study environment.

End-to-end encrypted sync

Optional cloud backup to a personal Cloudflare Worker. A 120-bit code is both identity and AES-256 key; the server only ever sees ciphertext.

React 19, TypeScript strict

A content-integrity test suite validates every card in every deck: gradeability, unique ids, valid lecture keys. Bad content cannot reach the build.

A content pipeline

Weekly lecture slides become validated flashcards through a documented authoring loop with automated card counting and drift locks.

Why it works

The mechanics are borrowed from cognitive science.

The game layer is sugar. The engine underneath follows three findings that keep replicating.

Retrieval practice

Testing yourself beats re-reading for long-term retention, even when the testing feels harder and less productive.

Roediger & Karpicke, 2006

The spacing effect

The same hours spread across days beat the same hours crammed into one night, by a wide and reliable margin.

Cepeda et al., 2006

Desirable difficulty

Conditions that slow learning down, like mixing topics and delaying review, tend to improve what survives a month later.

Bjork, 1994 · Rohrer & Taylor, 2007
The quiet part

Your studying is nobody's data.

There is no account to create, no analytics script watching you, and no server that ever sees your progress in plain text. Everything lives on your device, and the optional sync is encrypted with a key only you hold.

No accountNo trackingWorks offlineEncrypted syncFree