Skip to content

About

Social and dating app for vanlifers

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

VanlifeVibes Logo

VanlifeVibes

Connect with nomads, van lifers, and travelers on the road

Built for RevenueCat Shipyard Django 5.2 React Native Expo 54


🚐 About

VanlifeVibes is a mobile-first social network and dating app designed exclusively for van lifers, nomadic travelers, and digital nomads. It solves the unique challenge of making meaningful connections when you're always on the move.

The Problem

Traditional dating apps fail nomads because they assume you're staying put. Van lifers need to connect with other travelers who understand the lifestyle and share their routes β€” not locals who are rooted in one place.

The Solution

VanlifeVibes lets you:

  • Match based on travel timing β€” see who's in your city now, next week, or next month
  • Connect with fellow nomads β€” date or make friends with people who get the lifestyle
  • Join local events β€” find hiking buddies, coffee meetups, and campfire socials
  • Get help with your build β€” access a marketplace of van builders and DIY experts
  • Showcase your rig β€” share photos and specs of your van, RV, or skoolie

✨ Features

🎯 Core Features

  • Smart Discovery Feed β€” Swipe-based matching with relevance scoring based on location overlap, shared hobbies, and lifestyle compatibility
  • Dual Intent Matching β€” Separate feeds for dating and making friends, with bidirectional gender preference filtering
  • Location Timing β€” Set where you are now, next week, and next month to find travelers on similar routes
  • Overlap Detection β€” See exactly when and where your paths will cross with potential matches
  • Real-Time Chat β€” WebSocket-powered messaging with icebreakers and mini-cards per match
  • Profile Prompts β€” Answer travel-themed questions to showcase your personality
  • Vehicle Showcase β€” Display your van/RV with photos, specs, and build status

πŸ”₯ Campfire Events (Premium)

  • Direct-Join Events β€” Create instant meetups (coffee, hiking, coworking)
  • Swipe-to-Join Events β€” Host curated gatherings with approval-based attendance
  • Platform-Hosted Events β€” Auto-generated community events in popular nomad hubs
  • Group Chat β€” Real-time messaging unlocks when you join an event
  • Event Discovery β€” Filter by type, location, and date

πŸ”§ Builder Marketplace (Premium)

  • Offer Services β€” Electricians, plumbers, carpenters, and solar experts list their skills
  • Request Help β€” Post your van build challenges and get matched with experts
  • Location-Based β€” Find builders in your current city or upcoming stops
  • Direct Messaging β€” Chat with builders to discuss projects and pricing

πŸ’Ž Premium Subscription

Free Tier:

  • 3 swipes per day (dating + friends combined)
  • Basic profile and matching
  • View matches and chat

Premium ($4.99/mo via RevenueCat):

  • Unlimited swipes
  • Future location matching (next week, next month)
  • Access to Campfire Events
  • Access to Builder Marketplace
  • Priority in discovery feeds

πŸ—οΈ Architecture

graph TB
    subgraph "Mobile App (React Native + Expo)"
        A[Auth Flow] --> B[Main Tabs]
        B --> C[Discovery]
        B --> D[Campfire Events]
        B --> E[Matches & Chat]
        B --> F[Builder]
        B --> G[Profile]
        H[RevenueCat SDK] --> I[Paywall Modal]
        I --> C
        I --> D
        I --> F
    end
    
    subgraph "Backend (Django + DRF)"
        J[REST API] --> K[Auth & Profiles]
        J --> L[Discovery Engine]
        J --> M[Match System]
        J --> N[Events API]
        J --> O[Builder API]
        J --> P[Subscription API]
        Q[WebSocket Server] --> R[Match Chat]
        Q --> S[Event Chat]
        T[RevenueCat Webhook] --> P
    end
    
    subgraph "Data Layer"
        U[(PostgreSQL)] --> K
        U --> L
        U --> M
        U --> N
        U --> O
        V[(Redis)] --> Q
        W[S3 Bucket] --> X[Media Storage]
    end
    
    subgraph "External Services"
        Y[RevenueCat] --> H
        Y --> T
        Z[Google Play] --> Y
    end
    
    C --> J
    D --> J
    E --> J
    E --> Q
    F --> J
    G --> J
    A --> J
    
    style A fill:#fb7185
    style C fill:#fb7185
    style D fill:#f59e0b
    style E fill:#60a5fa
    style F fill:#34d399
    style G fill:#a78bfa
    style Y fill:#ff9500
Loading

🎨 Design System

DesertSunrise β€” Optimistic, warm, and expansive outdoor aesthetic

  • Warm Neutrals β€” Sand and clay tones with sunrise gradients (peach, amber, rust)
  • Sunrise Accents β€” Warm gradient fills for primary actions
  • Layered Elevation β€” Gentle shadows with large rounded corners
  • Breathable Spacing β€” Generous vertical rhythm for relaxed feel
  • Mobile-First β€” Designed exclusively for phone form factor

Tech Stack

  • Backend: Django 5.2, Django REST Framework, Django Channels (WebSocket), PostgreSQL
  • Mobile App: React Native (Expo 54), React Navigation, Axios
  • Auth: Token-based auth via DRF + django-allauth for email verification
  • Payments: RevenueCat (react-native-purchases) with Google Play Billing
  • Storage: S3 via django-storages (production), local filesystem (development)
  • ASGI Server: Daphne (production)
  • Deployment: AWS Elastic Beanstalk (Docker)
  • Package Managers: UV (Python), npm (mobile)

Project Structure

β”œβ”€β”€ core/                # Django app (models, views, serializers, services, tests)
β”œβ”€β”€ vanlifevibes/        # Django project settings, URLs, ASGI config
β”œβ”€β”€ mobile-app/          # React Native / Expo app (Android)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/  # Reusable UI (SwipeDeck, PaywallModal, SwipeCounter, etc.)
β”‚   β”‚   β”œβ”€β”€ contexts/    # AuthContext
β”‚   β”‚   β”œβ”€β”€ navigation/  # React Navigation stacks and tabs
β”‚   β”‚   β”œβ”€β”€ screens/     # App screens (Discovery, Matches, Profile, Events, etc.)
β”‚   β”‚   β”œβ”€β”€ services/    # API client, RevenueCat, WebSocket
β”‚   β”‚   └── theme/       # Colors and styling constants
β”‚   └── App.js           # Entry point
β”œβ”€β”€ templates/           # Django email templates (allauth)
β”œβ”€β”€ .ebextensions/       # Elastic Beanstalk config
β”œβ”€β”€ Dockerfile           # Production Docker image
β”œβ”€β”€ entrypoint.sh        # Container entrypoint (migrate + Daphne)
β”œβ”€β”€ DEPLOYMENT.md        # EB deployment guide
└── manage.py            # Django entrypoint

Quick Start

1. Install Dependencies

# Python dependencies
uv sync

# Mobile app dependencies
cd mobile-app && npm install && cd ..

2. Configure Environment

# Backend
cp .env.example .env
# Edit .env with your database credentials

# Mobile app
cd mobile-app
cp .env.example .env
# Edit .env with your LAN IP
cd ..

3. Setup Database

psql -U postgres -c "CREATE DATABASE vanlifevibes;"
uv run python manage.py migrate
uv run python manage.py createsuperuser

4. Start Development

# Terminal 1 β€” Backend (bind to LAN for mobile access)
uv run python manage.py runserver 0.0.0.0:8000

# Terminal 2 β€” Mobile app
cd mobile-app && npx expo start --lan

5. Access

API Endpoints

Auth

  • POST /api/v1/auth/signup/ – Register
  • POST /api/v1/auth/login/ – Login
  • POST /api/v1/auth/logout/ – Logout
  • GET /api/v1/auth/me/ – Current user

Profiles

  • GET /api/v1/profiles/me/ – My profile
  • PATCH /api/v1/profiles/me/ – Update profile
  • GET /api/v1/profiles/:id/ – View profile

Discovery

  • GET /api/v1/discovery/dating/ – Dating feed
  • GET /api/v1/discovery/friends/ – Friends feed
  • POST /api/v1/discovery/swipe/ – Cast swipe

Matches

  • GET /api/v1/matches/ – List matches
  • GET /api/v1/matches/:id/messages/ – Match messages
  • POST /api/v1/matches/:id/messages/ – Send message

Events

  • GET /api/v1/events/ – List events
  • POST /api/v1/events/ – Create event

Subscription

  • GET /api/v1/subscription/status/ – Subscription status
  • POST /api/v1/webhooks/revenuecat/ – RevenueCat webhook

Health

  • GET /api/v1/health/ – Health check (used by EB)

Testing

# All backend tests
uv run python manage.py test core.tests

# Or use the helper script
./run-tests.sh

Deployment

See DEPLOYMENT.md for the full Elastic Beanstalk deployment guide.

Mobile App Troubleshooting

If the mobile app can't reach the backend:

  1. Start Django bound to LAN: uv run python manage.py runserver 0.0.0.0:8000
  2. Set EXPO_PUBLIC_API_BASE_URL=http://<your-lan-ip>:8000/api/v1 in mobile-app/.env
  3. Restart Expo with cache clear: cd mobile-app && npx expo start --lan -c
  4. Confirm phone and laptop are on the same Wi-Fi network
  5. Test from phone browser: http://<your-lan-ip>:8000/api/v1/auth/login/ (a 404/405 confirms connectivity)

About

Social and dating app for vanlifers

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages