Inspiration

Quin Gable's brief spoke directly to a real problem: vanlifers and nomads struggle to date and make friends because "I'm leaving and they're staying put." There wasn't an app built for people who live on the road—so I built Roamies: a dating and community app where nomads can swipe, match, chat, see who's nearby on a map, and join or create convoys (travel plans). I kept the community invite-only and safety-first (block, report) to match the brief and protect the space.

What it does

  • Swipe & match: Card stack with like/pass; mutual likes create a match with a short celebration.
  • Chat: Conversations with matches—list and thread view, text, images, and voice messages.
  • Map: See where your matches are (distance, presence) on a map.
  • Convoys: Create or join travel plans (date, place, activity) and meet up on the road.
  • Profiles: Photos, bio, activities (climbing, skiing, hiking, etc.), dating vs friends mode.
  • Invite-only: Sign-up via invite code; Cloud Functions verify and consume codes.
  • Premium: RevenueCat subscription (unlimited swipes, see who liked you) + swipe packs (10 / 50 / 100). Paywall and entitlements drive the business model.

How I built Roamies

  • Stack: Expo SDK 54, Expo Router (file-based navigation), React 19, React Native, TypeScript, NativeWind v4 (Tailwind for RN). New Architecture enabled for performance.
  • Backend: Firebase (Auth, Firestore, Storage). Cloud Functions for invite codes, mutual-like matching, and photo URL handling.
  • Monetization: RevenueCat (react-native-purchases + react-native-purchases-ui) for subscriptions and one-time products.
  • Swipe UX: react-native-gesture-handler and react-native-reanimated for the card stack so swipes feel smooth and responsive.
  • Design: Single design system, light/dark mode, photo-first profiles. i18next for localization (EN and extensible).
  • Ship: EAS for iOS (TestFlight) and Android (internal testing).

Challenges I ran into

  • Gesture + layout: Making the swipe stack feel instant (no lag, no stuck cards) required tuning gesture handlers and avoiding nested ScrollViews. I ended up with a single gesture-driven stack and a separate filter sheet.
  • RevenueCat + Firebase: Keeping "is premium" and swipe quotas in sync after purchase or restore meant designing for webhooks and client-side entitlement checks so the app state stayed correct when the paywall closed.
  • Scope in 4 weeks: Quin's brief included dating, friends-by-activity, and a builder marketplace. I shipped dating + activities + convoys + map first and made invite-only and safety non-negotiable. Focusing on one primary flow (swipe → match → chat) kept the MVP shippable.

Accomplishments that i'm proud of

  • Full MVP in 4 weeks: Onboarding, swipe stack, matching, chat (text, images, voice), map, convoys, premium paywall, and invite-only—all working on iOS and Android.
  • RevenueCat done right: Both subscription and consumable products in one paywall, with clear entitlement logic and a polished paywall UI.
  • Swipe feel: The card stack runs at 60fps and feels native; haptics and match celebration add polish.
  • Safety from day one: Invite-only signup, block/report flows, and moderation-friendly data model.

What I learned

  • Swipe at 60fps: Gesture-handler + Reanimated (and avoiding heavy work on the JS thread) made the difference between "ok" and "great" swipe UX.
  • RevenueCat beyond "subscribe": Modeling Premium + swipe packs (entitlements + consumables) in one place taught us how to structure products and paywall copy for both subscription and one-time users.
  • Firebase + invite-only: Firestore rules plus a small Cloud Function (verify/consume invite code) gave us invite-only without a custom backend.
  • NativeWind in RN: Using className and a single token file for colors/theme sped up UI work and made light/dark mode consistent.

What's next for Roamies

  • Friends-by-activity: Dedicated "find friends" flow filtered by activity (climbing, skiing, hiking) and location, as in Quin's brief.
  • Builder marketplace: Connect van builders with people who need help (paid consultations, as suggested in the brief).
  • Verification & trust: Optional verification (e.g. photo or social) and clearer "verified" badges for safer community growth.

Built With

Share this project:

Updates