Skip to content

Repository files navigation

Interview Prep Dashboard

A unified, responsive dashboard that aggregates coding-interview questions for software engineers, ranks them for a target role + company (e.g. SDE 2 @ American Express), and tracks your preparation β€” inspired by a mix of LeetCode + Notion + Power BI.

Dashboard Preview

✨ Features

  • 🎯 Smart Recommendations β€” AI-powered ranking based on company frequency, difficulty fit, and interview trends
  • πŸ“Š Analytics Dashboard β€” Progress tracking, topic coverage, readiness gauge
  • πŸ—ΊοΈ Study Roadmap β€” 6-week personalized plan with must-do questions
  • πŸ” Advanced Filters β€” Company, role, experience, topic, difficulty, source, frequency
  • πŸ“š Multi-Source Data β€” LeetCode (1500+), Codeforces (300+), GeeksforGeeks (300+), curated overlay (90+)
  • πŸ’Ό Interview Types β€” Coding (DSA), System Design (HLD), Low-Level Design (LLD), AI/ML
  • 🎨 Modern UI β€” Dark/light theme, responsive layout, export to CSV/PDF
  • πŸ“ Progress Tracking β€” Mark questions as todo/attempted/solved, bookmark favorites, add notes

πŸ› οΈ Tech Stack

  • Backend: FastAPI + SQLAlchemy + SQLite
  • Frontend: React + Vite + TypeScript (custom SVG charts, no heavy UI deps)
  • Data: Live ingestion from public APIs + curated company-overlay layer

πŸ“‹ Table of Contents

πŸ“š Complete Documentation Index β€” Find all guides and documentation


πŸš€ Quick Start

One-Command Setup

Linux/macOS:

git clone https://github.com/YOUR_USERNAME/interview-prep-dashboard.git
cd interview-prep-dashboard
./start.sh

Windows:

git clone https://github.com/YOUR_USERNAME/interview-prep-dashboard.git
cd interview-prep-dashboard
start.bat

Manual Setup

Backend:

cd backend
python -m venv .venv
source .venv/bin/activate          # Linux/macOS: source .venv/bin/activate
                                    # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --port 8000

Frontend (new terminal):

cd frontend
npm install
npm run dev

Load data: Open http://localhost:5173 β†’ click "↻ Refresh Data"

πŸ“– Detailed setup guide: SETUP.md
⚑ Quick reference: QUICK_START.md

Prerequisites

  • Python 3.9+ (tested on 3.9–3.14)
  • Node.js 18+ and npm
  • Git (to clone the repo)

Step 1: Clone the repository

git clone https://github.com/YOUR_USERNAME/interview-prep-dashboard.git
cd interview-prep-dashboard

Step 2: Backend setup

On Linux/macOS:

cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --port 8000

On Windows (PowerShell):

cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --port 8000

On Windows (Command Prompt):

cd backend
python -m venv .venv
.venv\Scripts\activate.bat
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --port 8000

βœ… Backend running at http://127.0.0.1:8000
πŸ“š API docs: http://127.0.0.1:8000/docs

Step 3: Frontend setup

Open a new terminal (keep backend running), then:

cd frontend
npm install
npm run dev

βœ… App running at http://localhost:5173
(Vite proxies /api/* to the backend on :8000)

Step 4: Load data

The SQLite database auto-creates on first startup. Populate it by clicking ↻ Refresh Data in the UI, or via:

# Full ingestion (LeetCode + Codeforces + GeeksforGeeks + curated overlay)
curl -X POST "http://127.0.0.1:8000/api/ingest/run"

# OR offline mode (curated data only, no external API calls)
curl -X POST "http://127.0.0.1:8000/api/ingest/seed-only"

First-time ingestion takes ~30–60 seconds (fetches 1500 LeetCode, 300 Codeforces, 300 GeeksforGeeks problems). Subsequent runs are faster (upserts only).



3. Data sources β€” what's real vs. curated

Only two of the requested sources expose a usable public API; the rest have no public API, and company-tag / frequency / "last asked" data is premium-gated everywhere. This dashboard is honest about that split:

Source How What we get
Codeforces Official REST API (problemset.problems) Real problems, tags, rating→difficulty, solve-count→popularity
LeetCode Public GraphQL (questionList), paginated (100/page, up to leetcode_limit) Real free problems (~1200), difficulty, topic tags, acceptance rate, links
GeeksforGeeks Best-effort scrape of the practice explore endpoint Real practice problems, difficulty, topic + company tags, links
Curated overlay backend/app/data/curated_*.json (merged) Company tags, frequency, last-asked, Blind75/NeetCode flags, complexities, similar-question links, article/video resources, and content that has no API: HLD, LLD, and AI/ML interview questions (incl. an expanded American Express SDE-2 set)

HackerRank / InterviewBit / CodeStudio have no public API. GeeksforGeeks has no official API, so its ingester is best-effort and fails gracefully to the curated GfG article links. Company tags / frequency / "last asked" are premium-gated everywhere, hence the curated overlay.

Content categories

Beyond DSA, the dataset covers HLD (news feed, chat, distributed cache, autocomplete, payments ledger), LLD (elevator, vending machine, Splitwise, BookMyShow, logging), and AI/ML (bias-variance, regularization, precision/recall, gradient descent, backprop, transformers, RAG chatbot, recommendation & fraud-detection system design). Add more by editing any data/curated_*.json file β€” the loader merges them all.


2. Troubleshooting

SSL/TLS errors during ingestion

If you see CERTIFICATE_VERIFY_FAILED errors when running /api/ingest/run:

Option 1 (recommended): Point to your system's CA bundle

# Linux/macOS
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
# or wherever your corporate CA bundle lives

# Windows
set SSL_CERT_FILE=C:\path\to\ca-bundle.crt

Option 2 (dev only): Disable SSL verification

# Linux/macOS
export INGEST_SSL_VERIFY=false

# Windows (PowerShell)
$env:INGEST_SSL_VERIFY="false"

# Windows (Command Prompt)
set INGEST_SSL_VERIFY=false

Then restart uvicorn. Not recommended for production.

Python dependency issues

If pip install fails with build errors:

  1. Upgrade pip/setuptools: pip install --upgrade pip setuptools wheel
  2. Use pre-built wheels: Most packages ship wheels for Python 3.9–3.13. If you're on 3.14+, some packages may need source builds (requires Rust/C++ compilers).
  3. Fallback: Use Python 3.11 or 3.12 (most stable ecosystem support).

Port already in use

If :8000 or :5173 are taken, change them:

# Backend (choose any port)
python -m uvicorn app.main:app --reload --port 8001

# Frontend: edit frontend/vite.config.ts
server: { port: 5174, proxy: { '/api': 'http://localhost:8001' } }

Database locked errors

SQLite doesn't handle high concurrency well. If you see database is locked:

  • Only run one backend instance at a time
  • For production, consider PostgreSQL (change database.py connection string)


4. Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  React SPA (Vite, :5173)   β”‚  /api  β”‚  FastAPI (:8000)                        β”‚
β”‚  Questions Β· Analytics Β·   │──────► β”‚  routers/ questions, analytics,         β”‚
β”‚  Roadmap Β· AI Recommender  β”‚  proxy β”‚           roadmap, recommend, ingest    β”‚
β”‚  dark/light Β· CSV/PDF      β”‚        β”‚  services/ recommend (ranking engine)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚  ingest/  codeforces, leetcode, seed,   β”‚
                                       β”‚           classify (DSA taxonomy)       β”‚
                                       β”‚  models / schemas  β†’  SQLite            β”‚
                                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Database schema (SQLite via SQLAlchemy)

questions id, external_id, source, title, slug, url, description, difficulty, topic, subtopic, tags(JSON), ac_rate, cf_rating, popularity, is_blind75, is_neetcode150, similar_ids(JSON), time_complexity, space_complexity, solution_hint, created_at, updated_at β€” unique(source,external_id).

company_questions (curated overlay, N per question) id, question_id→questions, company, role, experience_level, interview_type, frequency, frequency_score, last_asked.

user_progress (1:1 with question) id, question_id→questions, status(todo|attempted|solved), bookmarked, notes, updated_at.

Topic classification

ingest/classify.py maps raw source tags onto the requested canonical taxonomy (Arrays, Strings, Hashing, Sliding Window, Two Pointers, Stack, Queue, Linked List, Heap/PQ, Trees, BST, Graphs, Backtracking, DP, Greedy, Bit Manipulation, Binary Search, Recursion, System Design, LLD, OOP) and derives a primary topic

  • subtopic.

Recommendation / ranking engine (services/recommend.py)

Weighted score per question for a (company, role, experience) context:

Factor Weight
Company frequency 40%
Recent interview trend (last-asked recency) 20%
Difficulty fit (Medium-preferred for SDE-2) 15%
Blind75 / NeetCode + popularity signal 15%
DSA-pattern coverage (diversity bonus) 10%

Also powers weak-areas detection and the 6-week study plan.



5. API reference

Method Path Purpose
GET /api/health health check
GET /api/filters dropdown options (companies, roles, topics, …)
GET /api/questions filtered + sorted + paginated table rows
GET /api/questions/{id} full question detail (companies, similar, complexity)
PATCH /api/questions/{id}/progress set status / bookmark / notes
GET /api/analytics totals, difficulty & progress distributions, readiness
GET /api/roadmap must-do, frequently-asked, Blind75/NeetCode coverage, SD/LLD
GET /api/recommendations ranked Top-N with score breakdown
GET /api/weak-areas topics to focus on
GET /api/study-plan balanced weekly plan
POST /api/ingest/run fetch LeetCode (paginated) + Codeforces + GeeksforGeeks, then apply curated overlay (params: leetcode_limit, codeforces_limit, gfg_limit)
POST /api/ingest/seed-only apply curated overlay only (offline)

/api/questions filters: company, role, experience, interview_type, topic, difficulty, source, frequency, last_asked_after, search, bookmarked, sort_by, sort_dir, skip, limit.



6. Dashboard features

  • Search & filter β€” company, role, experience, type, topic, difficulty, source, frequency, last-asked, bookmarked (defaults to American Express Β· SDE 2).
  • Questions table β€” sortable columns, inline status cycling & bookmarking, Blind75/NeetCode badges, source & frequency badges, pagination.
  • Question detail drawer β€” statement link, companies-asked table, complexity, hint, tags, similar questions, discussion + video resources.
  • Analytics β€” totals, Easy/Medium/Hard donut, progress tracker, most-asked topics, company-wise frequency, source split, readiness gauge.
  • Roadmap β€” Must-Do, Frequently-Asked, Company-Tagged, Blind75 & NeetCode coverage bars, System Design & LLD tracks.
  • AI Recommendations β€” ranked Top-50 with per-factor score breakdown, weak areas, and a 6-week study plan.
  • UX β€” dark/light theme, responsive layout, Export to Excel (CSV) & PDF (print), bookmarks, progress tracking.

🀝 Contributing

Contributions are welcome! Here's how you can help:

  1. Add more curated questions: Edit backend/app/data/curated_*.json
  2. Improve the ranking algorithm: Modify backend/app/services/recommend.py
  3. Add new data sources: Create ingesters in backend/app/ingest/
  4. Enhance the UI: Improve components in frontend/src/components/
  5. Report bugs: Open an issue on GitHub
  6. Submit PRs: Fork, create a feature branch, and submit a pull request

Development Workflow

# Backend type checking
cd backend && python -m mypy app/

# Frontend type checking
cd frontend && npx tsc --noEmit

# Frontend build
cd frontend && npm run build

πŸ“„ License

MIT License - see <ref_file file="C:/One/interview-prep-dashboard/LICENSE" /> for details.


πŸ™ Acknowledgments

  • Data Sources: LeetCode, Codeforces, GeeksforGeeks (public APIs)
  • Inspiration: Blind75, NeetCode150, Grind75
  • Community: Thanks to all contributors and users!

πŸ“ž Support

  • Documentation: <ref_file file="C:/One/interview-prep-dashboard/SETUP.md" /> for detailed setup
  • Issues: Open an issue on GitHub
  • API Docs: http://127.0.0.1:8000/docs (when backend is running)

Made with ❀️ for software engineers preparing for their dream job

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages