Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
Inspiration
The RevenueCat Shipyard hackathon caught my eye because the prompt was basically "build something with subscriptions that people would actually pay for." I'd been kicking around the idea of a nomad-focused social app for a while — I follow r/vandwellers and r/digitalnomad pretty closely, and the same complaint keeps coming up: there's no good way to find other nomads near you. Bumble BFF doesn't know what a van lifer is. Meetup assumes you have an address. iOverlander has great campsite data but zero social features.
The nomad community is massive (millions of van lifers, RV travelers, and digital nomads in the US alone) and growing fast, but the tooling is stuck in 2015 — scattered across Facebook groups, Discord servers, and Reddit threads. None of those help you find the person parked a mile from you right now.
The hackathon gave me the push to actually build it, and RevenueCat gave me the subscription infrastructure so I didn't have to spend weeks on StoreKit receipt validation and could focus on the features instead.
What it does
NomadConnect combines a few things that nomads currently need 4-5 separate apps for:
Swipe-based matching — Set your nomad type (van, RV, digital nomad), hobbies, and location. Swipe through nearby nomads for dating or friendship. Free users get 10 swipes/day, premium gets unlimited.
Trajectory matching — Log your travel plans (leaving Denver Tuesday, heading to Flagstaff by Friday). The app calculates route overlaps and shows you who's "heading your way." Instead of matching with someone 800 miles away, you find the person pulling into your campground tomorrow. This is the feature I'm most proud of — nothing else does it.
Events & community — Create campfire hangouts, group hikes, co-working sessions. Browse events on a list or map, RSVP, and a group chat auto-creates. It's Meetup for people who don't stay in one place.
Builder marketplace — Post van build help requests with your budget and urgency. Verified experts bid on jobs. There's also a gear shop for buying/selling solar panels, inverters, water tanks.
Premium toolkit — Four utilities:
- Camp Scout — campsite finder with BLM land, reviews, cell signal ratings
- Signal Finder — crowdsourced cell coverage reports by carrier
- Road Angel — broadcast to nearby nomads that you need (or can offer) a jump start, tire change, directions
- Rig Logbook — vehicle maintenance tracker
Monetization is one tier through RevenueCat: $9.99/month or $79.99/year. Free tier is genuinely usable (swipes, events, marketplace). Premium unlocks trajectory matching, "Who Liked Me" (blurred faces that un-blur), the toolkit, and unlimited swipes. The conversion hooks are baked into the UX — you see 4 blurred faces who liked you and it's hard not to upgrade.
How we built it
Frontend: React Native with Expo SDK 54. Expo Router for file-based navigation. NativeWind (Tailwind CSS for RN) for styling. Zustand for state management — five stores covering auth, chat, subscriptions, location, and travel plans.
UI system: Built a custom neumorphic component library from scratch (NeumorphicCard, NeumorphicButton, NeumorphicInput, etc.) — soft raised/pressed shadows on a warm gray background. It gives the app a distinctive look that doesn't feel like every other React Native app.
Backend: Fastify server with PostgreSQL. Organized into domain modules — auth, matching, chat, travel, events, builders, shop, subscriptions, profile. Two middleware layers: JWT authentication and premium subscription checks (server-side, don't trust the client).
Real-time: Socket.io for chat. When two users match or someone joins an event, a chat room gets auto-created. Messages persist to Postgres and broadcast over WebSocket.
RevenueCat integration has three parts: (1) client SDK wrapping the app in a provider, checking entitlements on launch, (2) native paywall via react-native-purchases-ui triggered when free users tap locked features, (3) server-side webhook receiving subscription events and updating our DB so the premium middleware always has truth.
Infrastructure: Backend deployed on Railway. Images on Cloudinary. Maps via Mapbox.
Demo data: Seeded 500 profiles with randomuser.me photos, 83 community activities, 50 builder experts, 14 open help requests with bids, and travel plans across the US so trajectory matching returns real results.
Challenges we ran into
Neumorphic design in React Native is harder than it sounds. RN doesn't support box-shadow the way CSS does — you need separate shadow properties per platform, and getting the raised/pressed look consistent across iOS and Android took a lot of iteration.
Trajectory matching math. Calculating route overlaps between two users' travel plans involves comparing line segments on a map, finding intersection points within time windows, and ranking by proximity. Getting this performant with 500 seeded users required some PostgreSQL query optimization.
RevenueCat + Expo — the SDK works well once configured, but getting the provider, entitlement checks, and webhook flow all wired up correctly took careful sequencing. The paywall presentation from react-native-purchases-ui is smooth though.
Location permissions — evaluators might not grant location access, but the dating cards endpoint depended on coordinates. Had to add a fallback to US geographic center so the app still works without location.
Invite code system — single-use codes meant the second evaluator would get blocked. Had to make the demo code (NOMAD2024) reusable while keeping regular codes single-use.
Navigation timing — Expo Router's router.replace() can't be called before the Stack navigator mounts. Hit a crash during splash screen flow and had to add a navReady state gate.
Accomplishments that we're proud of
Trajectory matching actually works. You log where you're going and when, and the app finds other nomads whose paths will cross yours. It's the kind of feature that sounds simple but involves real spatial + temporal computation on the backend.
The neumorphic UI system. It's a full component library — cards, buttons, inputs, avatars, badges, toggles, dividers — all with consistent soft shadows and a cohesive warm palette. The app has its own visual identity, not a generic template look.
Genuine free-to-premium conversion flow. The free tier is a real app (10 swipes/day, events, marketplace). Premium features are woven into the experience naturally — blurred "Who Liked Me" faces, locked trajectory matching, toolkit utilities that provide daily value. It's not a demo with a paywall slapped on.
500 seeded profiles with real-looking data. Evaluators open the app and immediately see a full community — profiles with photos, varied nomad types, hobbies, locations across the US, active events, builder experts. It feels like an app people already use.
Full-stack, end-to-end. Auth, matching, real-time chat, travel plans, events, marketplace, subscriptions, image uploads, WebSocket connections — all working together. Solo project, no templates or boilerplate starters.
What we learned
RevenueCat saves serious time. Subscription management, receipt validation, cross-platform entitlements, webhook events — all handled. Without it, I'd have spent weeks on StoreKit edge cases instead of building features.
Neumorphic design needs restraint. Early versions had too many shadow layers and the UI felt heavy. Pulling back to subtle shadows with high contrast text made everything more readable and faster to render.
Seed data matters more than you'd think. An empty app is impossible to evaluate. Spending time on realistic seed data (real photos, varied locations, actual travel plans) made the difference between a demo that feels dead and one that feels alive.
Server-side premium checks are essential. Client-side entitlement checks are for UX (showing/hiding UI). The real gate has to be on the server, or anyone with a network proxy can access premium endpoints.
Location fallbacks are non-negotiable. If your core feature depends on GPS, you need a graceful degradation path. Not everyone will grant location permissions, especially evaluators testing an unfamiliar app.
What's next for NomadConnect
Near term:
- Push notifications ("A nomad just arrived 2 miles from you")
- Voice/video calls so people don't have to exchange numbers right away
- ID verification for trust (especially for Road Angel meetups)
- Trail Signals — quick broadcasts to nearby nomads ("amazing sunset at mile marker 42", "road closed on RT 89")
Later:
- Android release (currently iOS-only)
- Transaction fees on the builder marketplace (5% cut)
- Sponsored campsite listings in Camp Scout
- Partnerships with Harvest Hosts, Boondockers Welcome for a bundled "Nomad Pass"
Long term:
- Reputation system across matching, events, and marketplace
- Insurance partnerships using Rig Logbook maintenance data
- Physical nomad hub partnerships
What we learned
What's next for NomadConnect
Built With
- cloudinary
- expo-router
- expo-sdk-54
- fastify
- mapbox
- nativewind
- postgresql
- railway
- react-native
- revenuecat
- socket.io
- typescript
- zustand
Log in or sign up for Devpost to join the conversation.