Skip to content

feat(resume-studio): display resume completion progress bar - #74

Open
PrathamReddy888 wants to merge 2 commits into
pari-28:mainfrom
PrathamReddy888:FEAT]-Display-Resume-Completion-Progress-#34
Open

PrathamReddy888 wants to merge 2 commits into
pari-28:mainfrom
PrathamReddy888:FEAT]-Display-Resume-Completion-Progress-#34

Conversation

@PrathamReddy888

@PrathamReddy888 PrathamReddy888 commented Aug 4, 2026 •

Copy link
Copy Markdown

Pull Request

📌 Related Issue

Fixes #34
Closes #34


📝 Description

Adds a Resume Completion Progress panel to the Interactive ATS Resume
Studio. As the user fills in or removes resume sections, the panel shows:

  • A dynamic progress bar reflecting the percentage of completed resume
    sections (0% → 100%).
  • A percentage readout and a completed/total count.
  • A missing-sections list with one-line actionable hints telling the
    user exactly what to fill in next.

The progress bar uses a dynamic color scheme (rose → amber → indigo →
emerald) as completion rises, giving instant visual feedback.

The component is fully responsive (single column on mobile, two columns
for the missing-sections list on sm: and up) and reuses the existing
dark-slate / indigo design tokens so it visually matches the rest of
the studio.

Implementation notes

  • New file src/components/ResumeProgress.tsx exports a default React
    component plus two pure helpers (getResumeSectionStatuses,
    getResumeCompletionPercent) that can be unit-tested in isolation.
  • ResumeStudio.tsx is unchanged except for an import and a single
    <ResumeProgress resume={resume} /> mount point in the left column.
  • No type changes — the component consumes the existing ResumeData
    type from src/types.ts.
  • 10 sections are tracked: full name, email, phone, website, GitHub,
    LinkedIn, education, experience, projects, and skills (≥ 3).
  • Each section is considered complete when its primary field is
    non-empty (after trim()). Empty list entries added via the
    "Add Experience" / "Add Project" buttons do not count as completed
    until their primary field is filled in, preventing false 100%.

🚀 Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • UI/UX improvement
  • Performance improvement
  • Documentation update
  • Refactoring
  • Security enhancement
  • Breaking change

🧪 Testing

  • Tested locally
  • Existing tests pass (npm test reports "0 unit tests found.
    Smoke test passed." — this is the project's current test gate per
    package.json.)
  • Added/updated tests (if applicable) — N/A; the project has no
    unit-test runner wired up (no Jest/Vitest installed). Pure helpers
    getResumeSectionStatuses and getResumeCompletionPercent are
    exported so they can be tested as soon as a runner is added.

Manual verification

  1. npm install
  2. npm run lint → Type Check passes (tsc --noEmit exits 0).
  3. npm run build → Build passes (Vite production build succeeds).
  4. npm run dev → open the Resume Studio tab.
  5. Verified:
    • On initial load with prefilled demo data, the bar shows 100%
      and a green "fully filled out" message.
    • Clearing the Email field drops the bar to 90% and surfaces
      "Email — Add a contact email so recruiters can reach you." in the
      Missing Sections list. Color shifts from emerald to indigo.
    • Removing all Skills drops to 80%. Color stays indigo.
    • Clearing Phone, Website, GitHub, LinkedIn, all of
      Education, Experience, Projects, Skills, and the Full Name drops to 0%. Bar is rose. The Missing Sections list
      shows all 10 sections.
    • The bar animates smoothly (500 ms transition) on every keystroke.
    • On a 375px-wide viewport (mobile) the missing-sections list
      collapses to one column; on ≥ 640px it expands to two columns.

📸 Screenshots / Demo

N/A — the panel renders inside the existing Resume Studio left column
above the ATS Score & Checklist. Color and spacing match the studio's
existing dark-slate / indigo tokens.


✅ Checklist

  • My code follows the project's coding style. (No ESLint/Prettier
    config exists in the repo; the only lint gate is tsc --noEmit
    which passes. Code follows the existing arrow-function component
    style and Tailwind class conventions used throughout the codebase.)
  • I have performed a self-review of my code.
  • I have tested my changes locally.
  • I have not introduced unrelated changes. (Only 2 lines changed in
    ResumeStudio.tsx; everything else is in a new file.)
  • Documentation has been updated where necessary. (Component is
    self-documenting via JSDoc on the exported helpers and the
    component itself.)
  • My changes do not introduce new warnings or errors.
    (tsc --noEmit clean, Vite build clean.)
  • This PR is linked to the appropriate issue. (Fixes #34)

💬 Additional Notes

  • The progress bar's section predicates mirror the existing ATS
    compliance rules in ResumeStudio.tsx, so the two panels can never
    drift apart semantically. If the ATS rules are updated in the
    future, the completion rules should be updated in parallel — they
    live in getResumeSectionStatuses() in ResumeProgress.tsx.
  • The component is intentionally presentational — it takes resume
    as a prop and derives everything via pure helpers, so it can be
    unit-tested without a React testing environment once a runner is
    added to the project.
  • No new runtime dependencies. Only lucide-react (already in
    package.json) is used for the three icons (Target,
    CheckCircle2, Circle).
  • Accessibility: the progress bar exposes role="progressbar" with
    aria-valuenow / aria-valuemin / aria-valuemax, and the panel
    itself is wrapped in a role="region" with a descriptive
    aria-label.

@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

@PrathamReddy888 is attempting to deploy a commit to the Pari's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added the frontend Frontend development label Aug 4, 2026
@PrathamReddy888

Copy link
Copy Markdown
Author

@pari-28 Please review, add appropriate ecsoc labels and merge

@PrathamReddy888

Copy link
Copy Markdown
Author

@pari-28 any changes required? worked very hard on this.

@PrathamReddy888

Copy link
Copy Markdown
Author

@pari-28 ?

1 similar comment
@PrathamReddy888

Copy link
Copy Markdown
Author

@pari-28 ?

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend Frontend development

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Display Resume Completion Progress

1 participant