feat: add PostHog analytics with full event tracking across app

Integrate self-hosted PostHog (SPM) with AnalyticsManager singleton wrapping
all SDK calls. Adds ~40 type-safe events covering trip planning, schedule,
progress, IAP, settings, polls, export, and share flows. Includes session
replay, autocapture, network telemetry, privacy opt-out toggle in Settings,
and super properties (app version, device, pro status, selected sports).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-10 15:12:16 -06:00
parent 5389fe3759
commit 2917ae22b1
20 changed files with 989 additions and 23 deletions

View File

@@ -176,6 +176,7 @@ final class ProgressViewModel {
func selectSport(_ sport: Sport) {
selectedSport = sport
AnalyticsManager.shared.track(.sportSwitched(sport: sport.rawValue))
}
func clearError() {
@@ -188,6 +189,10 @@ final class ProgressViewModel {
func deleteVisit(_ visit: StadiumVisit) async throws {
guard let container = modelContainer else { return }
if let sport = visit.sportEnum {
AnalyticsManager.shared.track(.stadiumVisitDeleted(stadiumId: visit.stadiumId, sport: sport.rawValue))
}
let context = ModelContext(container)
context.delete(visit)
try context.save()