Skip to content

About

Placement prep tracker that schedules DSA problem revisions with spaced repetition (SM-2), finds weak topics and builds a daily study plan. Python, SQLite, Streamlit, pytest.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

📚 Placement Prep Tracker

A study tracker for placement/interview prep. Log the DSA and CS problems you solve, and the app tells you what to revise each day using spaced repetition, so you don't forget problems you solved weeks ago. It also shows your weak topics and the core topics you haven't touched.

Built with Python, SQLite and Streamlit.

Today's plan in the Prep Tracker

Why

Most students solve a problem once and forget it before the interview. Re-solving at growing gaps (1 day → 3 days → a week → a month…) is the most reliable way to remember. Doing that by hand in a spreadsheet is tedious, so this app schedules it for you.

Features

  • Today's plan. Problems due for revision, ordered by how overdue they are and how weak the topic is, fitted into your daily study time. Leftover time is turned into "solve N new problems in topic X", starting with core topics you've never practised.
  • Spaced repetition. After re-solving a problem, rate it Again / Hard / Good / Easy. A simplified SM-2 algorithm (the one Anki uses) picks the next revision date: hard problems come back soon, easy ones much later.
  • Weak-area detection. Each topic gets a weakness score from your last 30 days of reviews (how often you rated it Again/Hard), how hard its problems feel overall, and how many are overdue.
  • Insights. Revisions per day, upcoming revision load for the next 2 weeks, difficulty mix, and a streak counter.
  • Notes per problem. Store the key idea and the mistake you made; they appear when the problem comes up for revision.
  • Multiple users. Each name gets a separate tracker, so friends can use the same deployment.
  • CSV export of all your problems.

Run it locally

git clone <your-repo-url>
cd prep-tracker
python -m venv .venv
# Windows: .venv\Scripts\activate    macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py

The app opens at http://localhost:8501. (In VS Code, opening the folder runs this automatically via .vscode/tasks.json.) Your data is saved in data/prep.db.

Want to see it with data first? Run python seed_demo.py, then enter the name demo in the app.

Run the tests

pip install pytest
pytest

How the scheduling works

Rating Meaning Effect
Again Couldn't solve it Back tomorrow, streak of successes reset, problem marked harder
Hard Solved but struggled Small step forward, problem marked harder
Good Solved normally Gap grows: 1 → 3 days → previous gap × ease
Easy Solved instantly Bigger jump, problem marked easier

The ease factor starts at 2.5, never goes below 1.3, and gaps are capped at 180 days. See tracker/srs.py.

Project structure

app.py               Streamlit UI (Today, Log a problem, My problems, Insights)
tracker/srs.py       Spaced-repetition scheduler
tracker/db.py        SQLite schema and queries
tracker/insights.py  Weak areas, daily plan, streaks, chart data
tests/               pytest suite for the scheduler, database and insights
seed_demo.py         Fills in sample data for a "demo" user

Deploying so friends can use it

The quickest option is Streamlit Community Cloud (free): push this repo to GitHub, click New app, pick app.py.

⚠️ On Streamlit Cloud the SQLite file is wiped whenever the app restarts or redeploys. That's fine for a demo, but before you invite real users, move storage to a hosted database (e.g. a free Postgres on Supabase or Neon). All database code lives in tracker/db.py, so that is the only file that needs to change.

There's also no password on user names yet, so anyone who types your name sees your tracker. Add login before sharing widely.

Roadmap ideas

  • Hosted Postgres + simple login
  • Import solved problems from a LeetCode profile
  • Company-wise problem lists (e.g. "TCS Digital", "Amazon SDE-1")
  • Email/Telegram reminder when revisions are due

About

Placement prep tracker that schedules DSA problem revisions with spaced repetition (SM-2), finds weak topics and builds a daily study plan. Python, SQLite, Streamlit, pytest.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages