Problem
The `Milestone` type has field naming inconsistencies that cause confusion and potential bugs.
Issues
1. `name` vs `title`
- `Milestone` type has both `name` and `title` fields
- Components use them inconsistently
- Contract uses `description`, backend uses `title`, frontend type has both
2. `status` vs `reviewStatus`
- Some components access `milestone.status`
- Others access `milestone.reviewStatus`
- API returns `reviewStatus` but component code sometimes maps it to `status`
3. Missing proof-of-work fields
- `MilestoneSubmissionModal` uses `proofOfWorkLinks` and `proofOfWorkFiles`
- These fields are not defined in the `Milestone` TypeScript type
- No `transactionHash` field for individual contributions in `Contributor` type
Expected Fix
- Audit `Milestone` type against API response shape (add missing fields, remove duplicates)
- Choose canonical field names and update all component references
- Add `proofOfWorkLinks`, `proofOfWorkFiles`, `submissionNotes` to Milestone type
- Add `transactionHash` to `Contributor` type if returned by API
Acceptance Criteria
Priority
Medium — Causes confusion and potential silent bugs.
Labels
crowdfunding, types, tech-debt
Problem
The `Milestone` type has field naming inconsistencies that cause confusion and potential bugs.
Issues
1. `name` vs `title`
2. `status` vs `reviewStatus`
3. Missing proof-of-work fields
Expected Fix
Acceptance Criteria
Priority
Medium — Causes confusion and potential silent bugs.
Labels
crowdfunding,types,tech-debt