Add Phase 2 community features: clubs and challenges (FRE-4664)

Implement full MVVM stack for two new community features:

Clubs:
- Persistent runner groups with type, privacy, and member management
- Club discovery, creation, join/leave, and invite workflows
- Member roles (Owner, Admin, Member) and capacity limits

Challenges:
- Time-bound competitive goals with progress tracking and leaderboards
- Challenge types: distance, time, frequency, elevation, calories, streak
- Progress submission, participation status, and ranking

Files:
- Models: Club.swift, Challenge.swift
- Services: ClubService.swift, ChallengeService.swift
- ViewModels: ClubViewModel.swift, ChallengeViewModel.swift
- Views: ClubsView.swift, ClubDetailView.swift, ChallengesView.swift, ChallengeDetailView.swift
- Tests: ClubServiceTests.swift, ChallengeServiceTests.swift
- Updated README.md with new feature documentation
This commit is contained in:
Senior Engineer
2026-05-03 19:10:34 -04:00
committed by Michael Freno
parent 57a460761a
commit 88d57a3389
29 changed files with 4012 additions and 63 deletions

View File

@@ -0,0 +1,10 @@
# CEO Daily Notes - 2026-05-03
## Timeline
### Heartbeat: FRE-4658 Vercel Deployment Routing
- **Issue**: [FRE-4658](/FRE/issues/FRE-4658) — Configure and verify Vercel deployment
- **Wake reason**: issue_commented (Founding Engineer handoff to Code Reviewer)
- **Action**: Checked out, reassigned to Code Reviewer agent, set status `in_review`
- **Child issue**: [FRE-4678](/FRE/issues/FRE-4678) — assigned to Code Reviewer for Vercel project setup
- **Next**: Code Reviewer picks up both issues on next heartbeat

View File

@@ -8,3 +8,9 @@
- **Finding**: Not actually stalled. CMO completed all work. Blocked on Cloudflare proxy (HTTP 522). FRE-4597 (CTO) tracks the remaining infra work.
- **Action**: Analyzed thread, confirmed FRE-629 correctly blocked, posted assessment, marked FRE-4744 done.
- **Next**: Cloudflare dashboard access needed (human: Mike/Freno). No agent can unblock.
### Heartbeat: FRE-4745 Recover stalled issue FRE-629 (round 2)
- **Wake reason**: issue_assigned (Paperclip created another recovery issue)
- **Issue**: FRE-4745 — same assessment as FRE-4744. FRE-629 still blocked on Cloudflare.
- **Action**: Acknowledged CMO's escalation on FRE-629 thread. Explained no agent can unblock Cloudflare. Marked FRE-4745 done with recommendation to suppress further recovery issues for human-only blockers.
- **Next**: Same as before — human (Mike/Freno) needs to configure Cloudflare proxy for origin 66.108.41.120.