Skip to content

Merge pull request #22 from shubamchaudhary/claude/add-save-progress-… - #23

Open
shubamchaudhary wants to merge 292 commits into
claude/add-save-progress-feature-011CV5kPahrBqqmGjH6fc78efrom
main
Open

Merge pull request #22 from shubamchaudhary/claude/add-save-progress-…#23
shubamchaudhary wants to merge 292 commits into
claude/add-save-progress-feature-011CV5kPahrBqqmGjH6fc78efrom
main

Conversation

@shubamchaudhary

Copy link
Copy Markdown
Owner

…feature-011CV5kPahrBqqmGjH6fc78e

Add AI-powered study assistant with 45-day planning and smart recomme…

@vercel

vercel Bot commented Nov 13, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dashboard Ready Ready Preview Aug 12, 2026 2:38pm

claude and others added 2 commits March 20, 2026 05:48
New "MOST ASKED" tab in resources dropdown with 100 curated medium/hard
interview questions organized by DSA topic (Arrays, DP, Graph, etc.).

Features:
- Green checkbox that auto-unchecks after 45 days for spaced repetition
- Per-question expandable notes with debounced auto-save
- Star/favorite questions
- "Resets in Xd" badge showing days until reattempt
- Restart session with confirmation modal (clears all progress)
- Full Firestore sync support (solved, timestamps, notes, starred)
- Progress circle and per-topic progress bars

https://claude.ai/code/session_016K7L6Q3Hed8pmcChLPPGHJ
…section-I32wl

Add Most Asked Questions feature with spaced repetition
claude and others added 2 commits May 11, 2026 12:05
- New route /job-hunt added to App.jsx (PrivateRoute protected)
- "JOB HUNT" added to Resources dropdown above "MOST ASKED" in Header
- JobHuntPlan.js: structured data for 38 sessions across Phase 1 (Weeks 1-4)
  and Phase 2 (Weeks 5-7), covering AI/RAG/Agents, HLD, LLD, and DSA
- JobHunt.jsx: expandable card UI per session with:
  - 4 animated category progress bars (AI, HLD, LLD, DSA) with % completion
  - Filter tabs (All / AI / HLD / LLD / DSA)
  - Phase + Week section grouping
  - Per-card: key topics, full Claude prompt with copy button, DSA LeetCode
    links with difficulty badges, auto-saved notes (localStorage), done toggle
  - Overall circular progress indicator
  - Dark mode support matching existing app UI

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
…-dropdown-yJAL2

Add comprehensive 16-week job hunt preparation plan with tracking
claude and others added 2 commits May 11, 2026 16:43
… chevron

- Remove subtitle tagline and target emoji from page header
- Replace category bars with circular progress rings (no emojis)
- Remove max-height/scroll on prompt block so it grows with content
- Enlarge notes section with gradient panel, larger textarea, char counter
- Smooth-scroll opened card into view after expand
- Fix chevron double-toggle so clicking arrow now opens the card

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
…-dropdown-yJAL2

Refine Job Hunt UI: circular category progress, expanded notes, fixed…
claude and others added 3 commits May 11, 2026 17:06
All 16 weeks now present: weeks 1-15 have 6 cards each, week 16 has 5
(Sunday rest day). Replaced incorrect week 7 placeholder entries with
the correct 6-card set matching the full plan spec.

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
Each week now has a 7th card capturing the Saturday (5.5h) + Sunday
morning (3h) project work block: weeks 1-11 build/iterate the RCA
agent, week 12 is job search active mode, week 13 is full mock
interview day, week 14 is heavy job search, week 15 is live
interview mode, week 16 is final polish + rest/reflect.

Also extended phase header labels to cover Phase 3 (Advanced Topics,
Weeks 9-12) and Phase 4 (Interview Mode, Weeks 13-16) — previously
only Phase 1 and 2 labels were rendered.

Final card count: weeks 1-15 have 7 cards each, week 16 has 6 (no
Sunday afternoon LLD on the rest day). 111 total cards.

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
…-dropdown-yJAL2

Claude/add plan resources dropdown y jal2
claude and others added 2 commits May 11, 2026 17:28
Data cleanup:
- Removed manager names (Ashis, Kasi, Shashi), personal incidents,
  salary targets (LPA figures), Pillar Award, and specific date
  references from all card prompts and key topics
- Replaced "girlfriend" rest-day note with generic personal time
- Generalized behavioral STAR stories to remove private details
- Removed timeline dates from file header comment

Access control:
- Job Hunt page now shows "Access Restricted" to any user whose
  Firebase auth email is not beshubam@gmail.com
- Auth state checked via onAuthStateChanged before rendering any content
- Page renders null while auth resolves (no flash of content)

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
…-dropdown-yJAL2

Remove personal info from Job Hunt plan + restrict page to owner
claude and others added 2 commits May 11, 2026 17:57
…Asked

Each card now shows a single daily DSA problem assigned by walking
across the 17 Most Asked sections one problem at a time
(Arrays[0] -> SlidingWindow[0] -> ... -> Design[0] -> Arrays[1] ...).
Sections that run out are skipped. This shuffles the 100 problems
across the first 100 cards in plan order, so daily practice rotates
through different patterns instead of clustering. Cards 101-111 do
not get a DSA problem.

Removed the now-unused getLeetCodeUrl slug map and DIFFICULTY_CONFIG
import. The dsaProblems field in the data is no longer read; left in
place to keep this diff small.

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
…-dropdown-yJAL2

Replace per-card DSA arrays with round-robin daily problem from Most …
claude and others added 2 commits May 12, 2026 03:07
- Show DSA badge in card header for any card with a daily DSA problem
- Add orange checkbox (DSA-specific) inside expanded card to track DSA completion independently
- Add DSA Solution Notes textarea (orange-themed) per card for approach/complexity notes
- Update DSA category stats ring to track daily DSA problem completions (0/100)
- Update DSA filter to show all cards with assigned daily problems
- Show "DSA✓" indicator in card header when DSA problem is completed

https://claude.ai/code/session_01U5DZywfpd4UYMhbMoLhex4
…-dropdown-yJAL2

Add DSA tag + separate DSA checkbox and notes section to all plan cards
claude and others added 30 commits August 1, 2026 14:37
The background glows were bright orange/amber and read as visible lights over
the cards. They are now violet/purple at roughly a third of the opacity and
far more blurred, so they register as depth rather than a light source, and
the page tint shifts from amber to violet to match.

The header becomes the same frosted surface as the page — translucent bar,
glass pills for the account chip and icon buttons, and a violet active nav
item in place of indigo.

Translucency needs something behind it: html/body had no background at all,
so the bar composited over the browser's white canvas and read grey in dark
mode. Both now carry the base canvas colour. Every page paints its own
full-height background over this, so it only shows through the header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuCu8tVP9RQ4uDZo5hUzJv
…racker-nqpn76

Dim the ambient glow to violet and give the header a matching glass bar
Adds a PageShell component carrying the violet gradient and the three faint,
heavily blurred orbs, and moves all five pages onto it — they previously each
had their own gradient (blue, orange, violet), so the app read as several
different products. The DSA page's local card/row surfaces are gone too: both
now come from the shared glass tokens, which are upgraded to the deeper frost
the DSA page had been using alone.

Drops backdrop-blur from row-level surfaces. A row sits on an already-frosted
card, so re-blurring a blurred backdrop changes nothing visually while costing
a compositing layer each. Most Asked DSA renders 86 rows and the DSA page up to
218; past roughly fifty stacked backdrop-filters Chromium tears them into black
rectangles over the content, which is what those pages were doing. Blur now
belongs to the page backdrop and the cards only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuCu8tVP9RQ4uDZo5hUzJv
…racker-nqpn76

Put every page on the shared glass pattern
…anent

Priority comes from measured data rather than judgement. Per-company LeetCode
tag frequencies (krishnadey30/LeetCode-Questions-CompanyWise) are restricted to
the 64 companies that appear in both that dataset and this user's own 470-company
target roster, normalised per company, weighted toward recent windows over
all-time, then scaled by how many of those companies ask each problem. P0 also
requires breadth, so one company's favourite cannot reach the top bucket. The
resulting P0 is the expected set — Two Sum, LRU Cache, Number of Islands, Valid
Parentheses, Merge Intervals. scripts/genDSAPriority.mjs regenerates the data
and documents the method.

Adds the 37 high-frequency problems the original curation missed. It excluded
Easy wholesale, which cut the single most-asked problem on the list: Two Sum is
tagged at 35 of the 64 target companies. Also folds in Reverse Linked List,
Merge Two Sorted Lists, Best Time to Buy and Sell Stock and the other staples,
plus Text Justification and Integer to English Words. 218 problems to 255.

Solves no longer expire. The 45-day timer silently un-ticked completed problems
and deleted their timestamp; a solve is now permanent and the row shows how long
ago it was done instead of counting down. Existing solves that predate timestamp
tracking get one backfilled so they can show an age too.

Filters gain P0-P3 chips beside the difficulty ones, each topic header shows how
many P0s remain unsolved there, and problems sort by priority within a topic.
The difficulty badge was a Hard/everything-else binary, so it labelled the newly
added Easy problems "Med" — it is now three-way.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuCu8tVP9RQ4uDZo5hUzJv
…in themselves

Frequency now spans every company in the dataset rather than the 64 that also
appear on the job-tracker roster. They are all SDE employers running DSA
interviews, so the old restriction discarded signal for no benefit; breadth is
far better sampled as a result (Two Sum is tagged at 72 companies, LRU Cache 55).

Adds a second, independent signal: whether a problem IS a technique rather than
an application of one. Blind 75 and NeetCode 150 are curated for pattern
coverage — each entry is the canonical representative of a pattern, which is why
those lists are small. Membership now sets a floor on the bucket: Blind 75 never
below P1, NeetCode 150 never below P2. Deliberately a floor and not a promotion,
so P0 keeps meaning "asked constantly" and stays trustworthy as a do-these-first
list, while an anchor that is rarely asked still cannot sink out of sight.

Both lists are committed to scripts/data/patternLists.json with their sources.
The Blind 75 slugs were taken from two independent repositories and are
byte-identical between them; the NeetCode 150 set resolves to 150 problems
across its 18 pattern groups, and 73 of the 75 Blind problems fall inside it,
which matches how the lists are known to relate.

Fills the 21 remaining pattern anchors the set was missing, so it now covers
every pattern those lists cover. Three are left out on purpose — Encode and
Decode Strings, Meeting Rooms and Walls and Gates are LeetCode Premium and
their patterns are already covered by Meeting Rooms II and Rotting Oranges.

Each anchor carries the technique it teaches, shown beside the title, and the
Blind 75 set is marked with a diamond and filterable as Core.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuCu8tVP9RQ4uDZo5hUzJv
…racker-nqpn76

Claude/job application tracker nqpn76
…e filter

The filter row is now just All / P0 / P1 / P2 / P3 / ★. The difficulty and
Today chips are gone, and the counts come off the chips — the header reports
them instead, so a number appears in one place rather than two.

Solved and the completion ring now describe whatever filter is active rather
than the whole list: picking P0 shows progress through P0 (7/35, 20%) instead
of restating overall progress. That makes the ring answer "how far through this
am I", which is the question a filter implies.

Drops the Starred and Today pills from the header and the strapline about
ranking method, leaving the title and a single progress readout.

The Core filter is gone too; that signal now lives inside the priority buckets
where it already set the floor (Blind 75 never below P1), and additionally
sorts pattern anchors to the top of their bucket — the technique comes before
the problems that apply it. Rows keep the diamond so an anchor is still
identifiable, and the per-topic P0 badge hides under the P0 filter, where every
visible row is a P0 and the count only repeats what the header says.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuCu8tVP9RQ4uDZo5hUzJv
All 86 problems on that page exist in the main DSA list, so nothing is lost by
dropping it: 29 are P0, 46 are P1, 10 are P2 and one is P3. Solve state was
always shared through the same store keyed by problem id, so progress recorded
there already shows on the DSA page and stays intact.

The page had become the weaker of the two. Its tiers were hand-curated, while
the priorities are derived from measured frequency across 200 companies, and
its 86 problems are a strict subset — 84 further P0/P1 problems never appeared
on it at all. P0 is now the better answer to "what do I do the night before",
and it is both broader and better evidenced.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuCu8tVP9RQ4uDZo5hUzJv
…racker-nqpn76

Claude/job application tracker nqpn76
The AI/HLD/LLD/Spring Boot Topics page is retired: nothing routes or links
to it any more (/interview-prep redirects to /core-stack) but the page, its
plan data and its stored progress are all left in place, so it can come back
by restoring one route.

Core Stack lists the 39 Java + Spring Boot topics in study order under a
single "Java and Spring Boot" section, filterable by All / P0 / P1 / P2, and
mirrors the DSA board's layout, glass surfaces and interactions:

  • card front — priority, topic, video count + watch time, channel, a tick
    box and, once ticked, how long ago it was ticked
  • card body  — every video behind the topic (position, channel, playlist,
    duration) with a video and a playlist link, the interview-question chain
    to attempt cold, and a notes box that auto-saves
  • ⊕ Today    — pushes the topic straight onto today's plan

Completion, tick timestamps and notes live in their own stores and are added
to the Firestore sync set, so they follow the account across devices. The
Planning page picks up the same source: its picker now offers Core Stack
topics and a planned topic expands to the identical detail panel; days that
already reference a Topics card still render from the retained store.

Topic data is generated from the tracker CSV (videos) and the topic map
(watch time, resume flags, questions), both checked in beside the generator —
regenerate with `node scripts/genCoreStack.mjs`.

Videos link to a YouTube search on title + channel: neither source carries
per-video ids, and network egress to YouTube is blocked here, so a search
that always resolves beats a guessed id.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZMg48snKjmC31mZX1daWc
…-redesign-lgcprq

Add Core Stack: Java + Spring Boot interview prep module
The playlists are the chosen source, so the per-video YouTube search link is
gone — a video row now offers "Copy title" plus the playlist link, which is
the actual workflow: open the playlist, paste the title into its search. The
card front carries the same copy affordance for the topic name.

Type scaled up across the page for readability: topic titles 13.5→15px, card
meta 10.5→12px, video titles 12.5→14px, video meta 10.5→12px, questions
12→13.5px with roomier spacing, notes 12→13.5px, plus the filter chips,
section heading and badges a step larger.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZMg48snKjmC31mZX1daWc
…-redesign-lgcprq

Core Stack: playlist-only links, copy buttons, larger type
AI Stack (/ai-stack, nav AI STACK) carries the 15 GenAI topics grouped into
the map's four parts — RAG, LangChain + LangGraph, evaluation, production —
filterable by part. A card opens onto the one resource for that topic (with
its in-site path and any read-only-this note), the depth ceiling saying what
is enough and where going deeper stops paying, the interview questions, and
notes. Topics that back a resume claim say so in an amber banner, since the
map marks those as the ones where the general concept isn't sufficient.

Part E — the deliberate skip list — is a footnote rather than cards: there is
nothing to study, but the line to say when asked is worth having on screen.

Both boards now render through components/TopicBoard, which owns the layout,
the tick + tick-age, the notes plumbing and the ⊕ Today push. The pages are
reduced to what actually differs: palette, sections, badges and detail body.
A layout change lands on both at once instead of drifting.

Also: the copy chip is gone from the card front on Core Stack — copying only
makes sense next to a video title, which is what gets pasted into a
playlist's search — and AI Stack progress (ticks, tick dates, notes) has its
own stores, joins the Firestore sync set, and is available in Planning's
picker with the same detail panel.

Topic data is generated: `node scripts/genAIStack.mjs` from
scripts/data/genaiPrepMap.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZMg48snKjmC31mZX1daWc
…-redesign-lgcprq

Add an AI Stack page, and share the board between it and Core Stack
/ai-stack now sits behind OwnerRoute, the same gate as the job tracker: a
non-owner hitting the URL is redirected to Core Stack, which is where any
unknown URL goes, so the page is indistinguishable from one that doesn't
exist. The nav entry moves into OWNER_NAV_ITEMS, so nobody else sees that it
is there.

Planning's picker was the remaining way in — it could list AI Stack topics to
any signed-in user. Its AI tab and results are now gated on the same isOwner
check, so the topics never render for anyone else.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZMg48snKjmC31mZX1daWc
…-redesign-lgcprq

Restrict AI Stack to the owner account
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants