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
1.9 KiB
1.9 KiB
Lendair iOS Project
Overview
Lendair is an iOS peer-to-peer lending application with real-time notifications, user profiles, and loan management.
Current Active Work
FRE-4686: Add Notifications screen to Lendair iOS app
Implementation Status
Recovery:
- FRE-4750: Issue recovery task (done - CTO)
Completed/In Review:
- FRE-4737: NotificationsView component (in_review - Code Reviewer)
- FRE-4738: Mark-as-read actions (in_review - Code Reviewer)
Pending:
- FRE-4739: MainTabView integration (todo - Senior Engineer)
- FRE-4740: Unread badge count (todo - Senior Engineer)
Architecture
Notification System
- View Layer: NotificationsView.swift, NotificationRowView.swift
- ViewModel Layer: NotificationsViewModel.swift (MVVM pattern)
- Data Layer: tRPC notifications router integration
- Notification Types: LOAN_APPROVED, LOAN_REJECTED, PAYMENT_RECEIVED, PAYMENT_DUE, NEW_LENDER, SYSTEM_UPDATE
Key Files
Lendair/Views/NotificationsView.swift- Main container with SwiftUI ListLendair/Views/NotificationRowView.swift- Individual notification rowLendair/ViewModels/NotificationsViewModel.swift- Data fetching and state management
Technical Decisions
- MVVM Pattern: Used for separation of concerns and testability
- SwiftUI List: For efficient rendering of notification collections
- Pull-to-refresh: Native Refreshable API for manual refresh
- Empty State: Custom empty state view with friendly messaging
- Notification Types: Enum-based system for type-safe notification handling
Dependencies
- Backend:
web/src/server/api/routers/notifications.ts - Database:
web/src/server/db/schema.ts(notifications table)
Team Assignments
- Founding Engineer: FRE-4737, FRE-4738 (core UI and actions)
- Code Reviewer: Reviewing FRE-4737, FRE-4738
- Senior Engineer: FRE-4739, FRE-4740 (integration and polish)