A personal, single-user dashboard for grinding toward the Microsoft intern Online Assessment and interviews: a structured DSA roadmap, a problem tracker, timed mock OAs, spaced-repetition review, analytics, Rust/Java pattern cheatsheets, and STAR behavioral prep — with XP, levels, and streaks to keep the reps going.
Live: https://imajij.github.io/rampup/
Everything is stored locally in your browser (localStorage). No accounts, no server, no database.
npm install
npm run dev # http://localhost:5173Other scripts:
npm run build # production build → dist/
npm run preview # serve the production build
npm run typecheck # tsc --noEmit
node --experimental-strip-types src/logic.test.ts # logic self-checks- All state lives in
localStoragebehind a single typed module,src/storage.ts(get/set/list+ per-entity repositories). Components never touchlocalStoragedirectly — they go through the reactive store insrc/store.tsx. - On first run the app seeds the roadmap, canonical problem metadata (titles, difficulties, source links, pattern tags — no copyrighted statements), pattern templates, and behavioral stubs (see
src/seed.ts). - Settings → Backup & restore exports a JSON snapshot you can re-import on another machine. Reset wipes everything and re-seeds.
- Upgrade path: because all persistence is isolated in
storage.ts, the layer can be swapped for a SQLite/Prisma backend later without touching any UI code.
- From the Roadmap: check off a canonical problem to log a solve (rate confidence + time → XP, mastery, and a spaced-repetition entry update instantly), or "Log another for this topic" to add your own with the topic's tags pre-filled.
- From Problems: "Log problem" for a fully custom entry (title, link, patterns, difficulty, status, your solution code, notes). Filter/sort/search there too.
- Solving anything weighted by difficulty (Easy 10 / Medium 25 / Hard 50 XP) and seeds the Review queue via a lightweight SM-2 schedule keyed off your confidence rating.
Vite · React · TypeScript · Tailwind CSS v4 · Recharts · lucide-react. Hash-based routing, zero backend.