
Outcomes
The problem
Interview prep has a tooling problem. Notes sit in one app, question lists in another, and nothing records what you have actually covered, so reading feels like progress even when little of it sticks. I built FrontendPro to close that loop for myself: read a topic, get tested on it right away, and have the result written down, all inside one product.
The retention mechanics (streaks, XP, and a weekly leaderboard) are borrowed deliberately from language-learning apps, because the hard part of interview prep is not finding material but showing up every day. Under the hood each of those numbers resolves to a row in the XP ledger, which keeps the gamification honest rather than decorative.
What it does
- Topic articles rendered from Markdown and grouped by JavaScript, React, System Design, TypeScript, CSS, and other domains.
- A graded question bank (306 questions) tagged by difficulty, framework and source, with answers revealed on demand.
- 330 quick quizzes for spaced review of material already read.
- A dashboard with a difficulty ring, per-topic progress bars and a GitHub-style activity heatmap.
- Daily streaks, XP and levels awarded per completion, plus a weekly leaderboard.
Data and auth
Articles, questions, and account progress are stored in PostgreSQL on Supabase and accessed through Prisma. Authentication supports email and password, Google, and GitHub. Signed-in users receive a JWT session in an httpOnly cookie; guests can still read and take quizzes, with progress kept locally in the browser.
Progress tracking
Reading an article, solving a question, or passing a quiz creates an entry in the XP ledger. Levels, achievements, streaks, and the weekly leaderboard are calculated from those entries, so every number on the dashboard can be traced back to a completed activity.
Honest limits
All of the content is written and maintained by one person, so coverage grows at the speed of my own studying rather than a community's. The XP ledger is computed on demand with nothing pre-aggregated, which is the right call now and would need rollup tables if the leaderboard ever got busy. The feature I want most is also the one still missing: the quizzes exist, but the app does not yet schedule when you should see a question again, so true spaced repetition is the next milestone.