2.2 KiB
2.2 KiB
Frontend Workflow
User flows and state management for Resume Matcher.
Core User Flow
Dashboard → Upload Master Resume → Tailor for Job → View/Edit → Download PDF
Pages
1. Dashboard (/dashboard)
- No master: "Initialize Master Resume" card
- Has master: "Master Resume" card + tailored tiles
- Create: "+" card opens
/tailor - Auto-refreshes on window focus
2. Resume Viewer (/resumes/[id])
- Read-only display at 250mm width
- Actions: Back, Edit, Download PDF, Delete
- Delete shows confirmation + success dialogs
3. Tailor (/tailor)
- Job description textarea (min 50 chars)
- Process: Upload JD → Improve → Redirect to viewer
4. Builder (/builder)
- Left panel: Editor (forms + formatting)
- Right panel: WYSIWYG preview
- Tabs: Resume | Cover Letter | Outreach
- Data priority: URL param → Context → localStorage → defaults
5. Settings (/settings)
- System status (cached)
- LLM configuration (6 providers)
- Last fetched indicator + manual refresh
Pagination Rules
- Sections CAN span pages
- Individual items stay together
- Pages ≥50% full before break
- Headers never orphaned
State Management
localStorage
| Key | Purpose |
|---|---|
master_resume_id |
Master resume UUID |
resume_builder_draft |
Auto-saved form |
resume_builder_settings |
Template prefs |
StatusCache Context
- Initial fetch on app start
- 30-min auto-refresh
- Optimistic counter updates
Delete Flow
- Click Delete → Confirmation dialog
- API:
DELETE /resumes/{id} - Clear localStorage if master
- Success dialog → Redirect to dashboard
Section Management
| Action | Result |
|---|---|
| Rename | Click pencil icon |
| Reorder | Up/down arrows |
| Hide | Eye icon (hidden sections still editable) |
| Delete | Hides default, removes custom |
| Add | "Add Section" button |
API Client
import { fetchResume, API_BASE } from '@/lib/api';
// Resume operations
fetchResume, fetchResumeList, updateResume, deleteResume
uploadJobDescriptions, improveResume, downloadResumePdf
// Config operations
fetchLlmConfig, updateLlmConfig, testLlmConnection