89 lines
2.2 KiB
Markdown
89 lines
2.2 KiB
Markdown
# 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
|
|
|
|
1. Click Delete → Confirmation dialog
|
|
2. API: `DELETE /resumes/{id}`
|
|
3. Clear localStorage if master
|
|
4. 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
|
|
|
|
```typescript
|
|
import { fetchResume, API_BASE } from '@/lib/api';
|
|
|
|
// Resume operations
|
|
fetchResume, fetchResumeList, updateResume, deleteResume
|
|
uploadJobDescriptions, improveResume, downloadResumePdf
|
|
|
|
// Config operations
|
|
fetchLlmConfig, updateLlmConfig, testLlmConnection
|
|
```
|