High-level technical overview of the Drift iOS app
Drift is a native iOS app for the van life/RV community. It lets users discover other travelers, find campgrounds, plan activities, and connect via messaging. The app is invite-only and monetizes through a premium subscription tier ("Drift Pro").
iOS 17+, Swift 5.9+, Xcode workspace
SwiftUI
Local Swift package (singleton managers, async/await)
Supabase (Auth, Postgres, Realtime, Storage, Edge Functions)
RevenueCat + App Store (auto-renewable)
Firebase Cloud Messaging (FCM)
Campflare API
VerifyFaceID (verification), Unsplash (event imagery)
A single local Swift package holds all backend logic and shared models. The app imports it and configures it once at launch (Supabase, Campflare, RevenueCat, VerifyFaceID, Unsplash).
Singletons, main-actor isolated for UI-safe updates
Auth (Apple, Google, email), session, user metadata, invite state, onboarding/welcome flags
Current user profile CRUD, travel schedule, prompts; used for onboarding completion
Subscription lifecycle, entitlement checks, purchase/restore, customer center
Campground search and availability
Friends, swipes, connections
Conversations and messages
Activities/events
Community posts and events
Invite codes (generate, redeem, check)
Van builder feature data
Face verification
Event header images
Supabase Auth with Apple, Google, and email. Session drives app routing and RLS.
Postgres with Row Level Security. Core areas: profiles, travel schedule, friends/connections, conversations/messages, activities, community/events, van builder.
Buckets for user uploads (avatars, photos) with RLS policies.
Server-side logic for account deletion, invite generation, and invite redemption.
Used where needed (e.g. event messages, attendees).
Campground search and availability
FCM for push notifications; app delegate registers for remote notifications and forwards tokens
Face verification flow
Optional event header images
Custom colors (BurntOrange, Charcoal), custom fonts, and shared styles for buttons, tags, and text
Main tabs; full-screen views (map, paywall, welcome, edit profile, van builder); modals/sheets for flows; dedicated onboarding flows