TL;DR
- Problem
- Placement prep is scattered across mock-interview sites, DSA sheets, resume docs, application spreadsheets, and random notes that never talk to each other, so it is easy to lose track of what to revise and what is due.
- Built
- Built a local-first Next.js 15 and Express/Prisma app over SQLite that unifies every prep workflow into one dashboard, with a rate-limited Gemini service (Bottleneck) powering interviews and resume analysis and a spaced-repetition engine deciding what to revisit next.
- Result
- 112 api endpoints · 22 data models
01The problem
Give myself and other students a single organized system for placement prep, every module a student actually needs, so prep lives in one place instead of messy notes, browser tabs, and forgotten deadlines.
Placement prep is scattered across mock-interview sites, DSA sheets, resume docs, application spreadsheets, and random notes that never talk to each other, so it is easy to lose track of what to revise and what is due.
02What I built
Built a local-first Next.js 15 and Express/Prisma app over SQLite that unifies every prep workflow into one dashboard, with a rate-limited Gemini service (Bottleneck) powering interviews and resume analysis and a spaced-repetition engine deciding what to revisit next.
- AI mock interviews on a Google Gemini pipeline, answered by text or voice (Web Speech API), with job-description and company-specific question generation plus batch answer evaluation, scoring, and feedback
- DSA tracker with built-in spaced repetition (1/3/7/14/30/60-day intervals) that resurfaces problems for review before you forget them
- Resume module that parses PDF/DOCX uploads and runs a Gemini skill-gap analysis against target roles
- Application, company, and opportunity trackers (internships, hackathons, OSS programs, fellowships) tied to a calendar and deadlines so nothing slips
- Weekly study goals and session tracking, custom question banks with model answers, and a priority task board
- Analytics dashboard with progress over time, performance by question type, weak-area detection, and CSV export, all on a local-first SQLite store
03The hard part
Gemini calls run through a rate-limited queue, so mock interviews slow down instead of failing at the quota.
04Results
- API Endpoints
- 112
- Data Models
- 22
- Status
- Self-hosted
05Stack
- Next.js
- React
- TypeScript
- Express
- Prisma
- SQLite
- Google Gemini
- Zustand
- Tailwind CSS
- Docker
