Merge pull request #22 from shubamchaudhary/claude/add-save-progress-… - #23
Open
shubamchaudhary wants to merge 292 commits into
Open
Merge pull request #22 from shubamchaudhary/claude/add-save-progress-…#23shubamchaudhary wants to merge 292 commits into
shubamchaudhary wants to merge 292 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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
- 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
… 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…
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
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
…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 …
- 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
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…feature-011CV5kPahrBqqmGjH6fc78e
Add AI-powered study assistant with 45-day planning and smart recomme…