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:
@@ -0,0 +1,37 @@
|
||||
# Atomic facts for Lendair iOS project
|
||||
|
||||
- id: "lendair-ios-fre4686"
|
||||
type: "project_milestone"
|
||||
date: "2026-05-03"
|
||||
title: "Notifications screen implementation"
|
||||
status: "in_progress"
|
||||
details:
|
||||
parent_issue: "FRE-4686"
|
||||
child_issues:
|
||||
- "FRE-4737"
|
||||
- "FRE-4738"
|
||||
- "FRE-4739"
|
||||
- "FRE-4740"
|
||||
implementation_approach: "MVVM with SwiftUI"
|
||||
notification_types:
|
||||
- "LOAN_APPROVED"
|
||||
- "LOAN_REJECTED"
|
||||
- "PAYMENT_RECEIVED"
|
||||
- "PAYMENT_DUE"
|
||||
- "NEW_LENDER"
|
||||
- "SYSTEM_UPDATE"
|
||||
files_created:
|
||||
- "Lendair/Views/NotificationsView.swift"
|
||||
- "Lendair/Views/NotificationRowView.swift"
|
||||
- "Lendair/ViewModels/NotificationsViewModel.swift"
|
||||
team分工:
|
||||
founding_engineer:
|
||||
- "FRE-4737"
|
||||
- "FRE-4738"
|
||||
senior_engineer:
|
||||
- "FRE-4739"
|
||||
- "FRE-4740"
|
||||
code_reviewer:
|
||||
reviewing:
|
||||
- "FRE-4737"
|
||||
- "FRE-4738"
|
||||
@@ -0,0 +1,54 @@
|
||||
# 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 List
|
||||
- `Lendair/Views/NotificationRowView.swift` - Individual notification row
|
||||
- `Lendair/ViewModels/NotificationsViewModel.swift` - Data fetching and state management
|
||||
|
||||
## Technical Decisions
|
||||
|
||||
1. **MVVM Pattern**: Used for separation of concerns and testability
|
||||
2. **SwiftUI List**: For efficient rendering of notification collections
|
||||
3. **Pull-to-refresh**: Native Refreshable API for manual refresh
|
||||
4. **Empty State**: Custom empty state view with friendly messaging
|
||||
5. **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)
|
||||
Reference in New Issue
Block a user