AI-powered Resume Workspace for Job Seekers · Visual · Exportable · Feedback-driven
⚛️ React SPA | 🎭 Progress Simulation | 📄 ATS-Friendly Resume Generation
🧠 HR-Style Feedback | 🔐 JWT Auth | 🐳 Docker Deployment
📌 For Chinese Version:
👉 点击查看中文版 README
FairStart is an intelligent, visual, and exportable platform for resume creation and optimization.
Unlike traditional resume forms, FairStart’s frontend acts as a full-featured resume workstation:
“Resume Input → AI Optimization → HR-style Feedback → PDF/Word Export”
FairStart product overview
|
Feature highlights & capabilities
|
Guided resume builder introduction
|
- Modular input for personal info, education, experience, projects, skills
- Real-time validation
- Autosaves to
localStorageto prevent data loss - Axios + JWT to request AI optimization
- Backend returns structured JSON → instantly rendered in UI
- Upload PDF/Word resume
- Paste job description directly
- Backend multi-agent workflow parses content into structured data
- Auto-filled UI → enters optimization pipeline
Built using React + Tailwind CSS:
- Renders backend JSON into a clean resume layout
- Fully ATS-optimized structure
- Real-time preview (no reload)
- One-click export to PDF / Word
- Modular layout → expandable templates/themes
- Printing optimized (links rendered as plain text)
Frontend renders final resume layout; backend only produces content.
Backend returns:
- Match score
- Job-related strengths
- Risk points
- Improvement suggestions for each experience
Frontend displays:
- Tag-based feedback (e.g., High Match, Needs Quantification)
- Per-experience suggestions
- Tailwind-based clean card UI
Creates a realistic “feedback from an actual recruiter” experience.
AI processing takes 2–3 minutes → frontend simulates progress:
- ✔ Fake progress bar
- ✔ Skeleton UI
- ✔ Stage-based hints
- ✔ Animated transitions
Stages include:
Parsing resume…
Optimizing bullet points…
Evaluating JD fit…
Generating final summary…
This provides a steady, controlled, user-friendly loading experience.
| Technology | Purpose |
|---|---|
| React | SPA + component-driven UI |
| Tailwind CSS | Modern UI + responsive styling |
| Axios | API requests + JWT injection |
| localStorage + JWT | Authentication & persistence |
| React Router | Routing management |
| Docker | Deployment |
graph TB
U[User UI<br/>React] --> F1[Choose Mode<br/>Form / Upload + JD]
F1 --> F2[Fill Info or Upload]
F2 --> F3[Request AI Optimization]
F3 --> P[Fake Progress Bar<br/>Skeleton]
F3 --> A[Axios + JWT → FastAPI]
A --> B[Backend Multi-Agent Workflow<br/>LangGraph + DeepSeek + Qwen3]
B --> C[Returns Structured JSON<br/>Resume + Score + Suggestions]
C --> V[ResumePreview<br/>Live Rendering]
C --> R[HR Feedback]
V --> D[Export PDF/Word]
D --> S[Backend File Generation → Download]
- React component best practices
- Axios interceptors (JWT + unified error handling)
- Tailwind abstraction + utility reuse
- Prevent duplicate submissions
- Local caching for auto-save
- Personal Info
- Education
- Work Experience
- Projects
- Skills
- Certificates
- Career Summary
- HR Feedback
- Dual Input: Form / Upload
- Export to PDF & Word
git clone https://github.com/626-Legendary/ai-resume.git
cd ai-resume
npm install
npm run devBuild:
npm run buildSupported platforms:
- Vercel (recommended)
- Netlify
- GitHub Pages
- Docker + Nginx
- Traditional Nginx / Apache
- JWT persisted on frontend
- Axios auto-attaches token
- Strict field validation
- Default: all data stored locally only
- Optional backend HTTPS + data cleanup policies
src/
components/dashboard/
DashboardCreate.jsx
ResumePreview.jsx
DashboardEnhance.jsx
components/home/
components/ui/
App.jsx
main.jsx
router.jsx
vite.config.js
README.md / README_CN.md
{
"PersonalInfo": { "firstName": "", "lastName": "", "email": "" },
"WorkExperience": [
{ "jobTitle": "", "company": "", "description": "" }
],
"Education": [],
"Projects": [],
"Skills": "",
"Certificates": [],
"Summary": ""
}Stored in:
localStorage["ai-resume-data"]
- Multi-step forms
- Local cache buffer
- Builds previewData
generateResumeHTML()printResume()- Local persistence
- Live rendering
- Printing optimization
- DOM-based pagination
- PDF/DOC upload
- JD paste support
- AI invocation (extendable)
generateResumeHTML- Pagination logic
- Print compatibility
- Axios interceptor
- File export logic
npm run dev
npm run build
npm run preview- No server-side data storage by default
- Optional HTTPS enforcement
- Designed to keep all user data local
DashboardCreate.jsx→ HTML export / printResumePreview.jsx→ Pagination / formattingDashboardEnhance.jsx→ Upload + JD UIvite.config.js→ Alias config


