- Frontend: React (Vite)
- Backend: Vercel Serverless API (Express-style structure)
- Database: MongoDB Atlas
- Deployment: Vercel
- UI Framework: Bootstrap (optional polish)
- Create root repo
weight-track - Create folder
apps/web - Create folder
api - Configure root
package.jsonwith workspaces - Add
.gitignore - Add README scaffold
Acceptance Criteria:
- Repo builds without errors
- Folder structure matches architecture plan
- Create Vite React app in
apps/web - Install React Router
- Configure basic routing
- Verify local dev server works
Acceptance Criteria:
- App runs at localhost:5173
- Basic page renders
- Create
/api/health - Implement Mongo connection utility
- Setup environment variables
- Install MongoDB driver or Mongoose
- Test API locally
Acceptance Criteria:
/api/healthreturns JSON- Mongo connection successful
- Create Atlas cluster
- Create DB user
- Add IP access rules
- Add
MONGODB_URIto.env.local
Acceptance Criteria:
- API connects successfully
Fields:
- value (stored in pounds)
- unit (lb | kg)
- comment
- recordedAt
- createdAt
Tasks:
- Create schema
- Add validation
- Unit conversion helper
Acceptance Criteria:
- Data stored consistently in pounds
- Validate input
- Convert kg → lb
- Save document
- Return saved entry
Acceptance Criteria:
- Valid submission creates entry
- Invalid input returns 400
- Support date filters
- Support pagination
- Sort descending
Acceptance Criteria:
- Filters work correctly
- Weight input
- Unit selector
- Comment field
- Submit handler
- Success/error states
Acceptance Criteria:
- Entry saved and visible
- Fetch weigh-ins
- Display table
- Date filter UI
Acceptance Criteria:
- Entries list correctly
Metrics:
- count
- min
- max
- average
- start weight
- end weight
- net change
- adherence %
Acceptance Criteria:
- Report accurate
- Accept range param
- Accept custom range
- Return structured JSON
Acceptance Criteria:
- Endpoint returns correct metrics
- Preset buttons
- Custom date picker
- Render formatted report
Acceptance Criteria:
- Report readable and accurate
- Install chart lib
- Create line chart
- Add tooltips
Acceptance Criteria:
- Chart renders properly
- Compute 7-day moving average
- Overlay on chart
Acceptance Criteria:
- Moving average accurate
- Compute slope
- Classify Up/Down/Flat
- Display badge
Acceptance Criteria:
- Trend classification correct
- Install Bootstrap
- Create layout container
- Create navbar
Acceptance Criteria:
- UI responsive and clean
- Loading spinners
- Error toasts
- Empty states
Acceptance Criteria:
- No raw errors shown
- Implement PATCH endpoint
- Implement DELETE endpoint
- Add edit modal
Acceptance Criteria:
- User can modify entries
- Connect GitHub
- Configure environment variables
- Verify preview deploys
Acceptance Criteria:
- Public URL working
- Implement connection caching
- Avoid connection per request
Acceptance Criteria:
- No connection exhaustion
- Improve
/api/health - Add DB ping
Acceptance Criteria:
- Health endpoint confirms DB status
- Implement camera input
- Preview
- Retake option
- Integrate OCR provider
- Parse weight
- Return confidence
- Show suggested value
- Allow correction
- Save confirmed value
- Authentication
- CSV export
- Goal weight tracking
- Streaks
- PWA offline mode