# Nessa Project Facts ## Project Overview - Type: "iOS fitness tracking application (Strava competitor)" - Tech Stack: "Swift, SwiftUI, GRDB (local database), HealthKit" - Location: "/home/mike/code/Nessa" - Repository: "https://git.freno.me/Mike/Nessa.git" - Target: "2,000 paying users = $10k MRR" ## Architecture ### Database - ORM: "GRDB with migrations" - Schema: "users, workouts, social features (profiles, follows, kudos, comments), segments" - Migration pattern: "Incremental migrations with existence checks" - DatabaseManager: "Centralized database access with read/write methods" ### Current Features - Workout types: 11 - HealthKit integration: true - Basic dashboard and authentication: true - Social features: "profiles, follows, kudos, comments, activity feed" - Segments with leaderboards and efforts: true - Heart rate tracking: true ### Subscription Model (Planned) - Free price: "$0" - Free features: "Core features except route planning, AI features, offline maps" - Plus price: "$4.99/mo" - Plus features: "Route planning, offline maps, advanced segments, personal heatmaps" - Pro price: "$9.99/mo" - Pro features: "AI training plans, premium challenges, priority support, fitness tracking" ### Subscription Implementation - Payment: "StoreKit 2 for iOS native subscriptions" - Product IDs: "com.nessa.subscription.plus.monthly, com.nessa.subscription.pro.monthly, com.nessa.subscription.plus.yearly, com.nessa.subscription.pro.yearly" - Feature Gating: "SubscriptionService with PremiumFeature enum" - Backend: "Receipt validation endpoints, App Store Server Notifications webhook" - Timeline: "4 weeks (6 phases)" - Sub-issues: "FRE-108 through FRE-112" ## Completed Work (2026-03-10) ### StoreKit 2 Integration (FRE-108) - Status: "Completed" - Deliverables: - ProductStore.swift: "Product fetching, caching, tier/period management" - PurchaseManager.swift: "Transaction handling, restoration, secure storage" - TransactionObserver.swift: "Real-time monitoring, entitlement tracking" - SubscriptionView.swift: "Complete UI with tier/period selection" - StoreKitConfiguration.storekit: "4 subscription products configured" - Products configured: - Plus Monthly: "$4.99" - Pro Monthly: "$9.99" - Plus Yearly: "$49.99 (17% savings)" - Pro Yearly: "$99.99 (17% savings)" - Integration points: - NessaApp.swift: "TransactionObserver initialization" - SettingsTabView: "Premium section with tier indicator" - Pending transaction processing on app launch ## Feature Roadmap ### Phase 1 MVP Status - Status: "Completed" - Features: "Activity tracking + feed + kudos + comments, Profiles + follow system, Basic segments" ### Phase 2 Community Growth - Issue: "FRE-92" - Features: "Clubs system, Monthly challenges, 1v1 challenges, Share to social, Invite system" - Timeline: "10 weeks" - Sub-issues: "FRE-102 through FRE-107" ### Phase 3 Premium Features - Features: "Route planning with turn-by-turn, AI training plans, Offline maps, Advanced analytics" ## Revenue Targets - Month 1: "$500-1,000 MRR (100 paying users)" - Month 3: "$2,500-5,000 MRR (500 paying users)" - Month 6: "$5,000-10,000 MRR (1,000 paying users)" - Year 1: "$10,000+ MRR (2,000 paying users)" ## Technical Debt and Considerations - Subscription infrastructure: "Not yet implemented" - Backend API: "Required for subscriptions (not yet built)" - Architecture: "Local-first with GRDB (sync TBD)" - Competitive goal: "Feature parity with Strava" ## Key Files - User model: "Nessa/Models/User.swift" - Database manager: "Nessa/Core/Database/DatabaseManager.swift" - Subscription plan: "plans/2026-03-09-subscription-tiers-implementation.md" - Community plan: "plans/2026-03-09-phase2-community-growth.md" ## Related Issues - Strava parity: "FRE-73" - Community growth: "FRE-92 (in_review)" - Subscription tiers: "FRE-94 (in_review)" - Subscription sub-issues: "FRE-108 to FRE-112" - Community sub-issues: "FRE-102 to FRE-107" ## Access Metadata - created: "2026-03-09" - last_accessed: "2026-03-10T23:10:00Z" - access_count: 2