RecallDSA: spaced repetition for coding interview practice

A walkthrough of RecallDSA, the Next.js and Prisma app I built to turn solved DSA problems into a revision queue, connect GitHub repos, track weak patterns, and make interview prep measurable.

RecallDSA came from a familiar interview-prep problem: solving a data structures and algorithms problem once does not mean it will be there when you need it. I wanted a tool that treats each solved problem as something to revisit, not something to forget in a spreadsheet.

The app is a Next.js revision trainer backed by Prisma and PostgreSQL. You connect a GitHub repository, sync solved problems, and RecallDSA turns them into a spaced-repetition queue with recall notes, mistake logs, pattern tracking, and readiness metrics.

The core workflow

The dashboard starts with what matters today: which problems are due, where your weak patterns are, and how much revision history exists behind each topic. Instead of browsing an endless list, the app gives you a concrete queue to work through.

Why GitHub is part of it

Most DSA trackers ask you to manually mark a problem as solved. RecallDSA uses the repo as the source of truth because the actual solution file is better evidence. That also makes the code viewer useful: you can compare what you remembered with the version you committed.

The useful question is not how many problems you solved. It is which solved problems you can still explain without help.

Keeping the queue clean

A lot of the hard work was not UI. It was data integrity. I added canonical problem identity so the same LeetCode problem does not appear as duplicate revision cards under slightly different names, and I added a dedupe path that keeps the strongest revision history when older duplicates exist.

Pattern enrichment also matters. When a problem is unclassified, the app tries to use stronger signals such as LeetCode topic tags instead of relying only on broad filename or folder heuristics. That makes the weakness view more useful over time.

Built like an app, not a spreadsheet

The app has a code viewer with theme-aware syntax highlighting and copy support, an activity calendar for consistency, revision and recall pages for focused practice, settings for repo management, and a native PWA install path so it can live like a small desktop app in Chrome.

What I would reuse

The product lesson is that learning tools need a real feedback loop. A pretty list of problems is not enough. The app has to turn prior work into the next best action, preserve enough history to make that action trustworthy, and stay quiet when there is nothing useful to say.