A Flutter app connecting van lifers for dating, friendship, and community through a living map with video-first profiles.
- Living Map - Real-time map showing nearby nomads with animated markers
- Video-First Profiles - 15-60 second video introductions instead of static photos
- Stories Feed - Vertical video feed of van life stories
- Quest System - Gamification with adventure scores and challenges
- Real-time Chat - Connect with matches and send messages
- Route Matching - See who's heading in your direction
- Flutter SDK (3.8.1 or higher)
- Firebase CLI (for deploying rules)
- Android Studio / Xcode for mobile development
- Clone the repository:
git clone <repository-url>
cd nomad- Install dependencies:
flutter pub get- Run the app:
flutter runOn first launch, the app will:
- Auto-create a test Firebase account (
test@nomad.app) - Upload sample mock data to Firestore
- Sign you in automatically
The app uses Firebase for:
- Authentication - Email/password (phone auth planned)
- Firestore - Real-time database for users, locations, stories, chat
- Storage - Video and image uploads
See FIREBASE_SETUP.md for detailed Firebase configuration.
./scripts/deploy-rules.shOr manually:
firebase deploy --only firestore:rules,storage:ruleslib/
├── app/
│ ├── firebase/
│ │ ├── auth/ # Authentication services
│ │ └── firestore/ # Firestore services & data migration
│ ├── models/ # Data models
│ ├── screens/ # UI screens (tabs, onboarding, etc.)
│ ├── state/ # State management (Provider)
│ └── util/ # Utilities
├── firebase_options.dart # Firebase configuration
└── main.dart # App entry point
- Email:
test@nomad.app - Password:
test123456
Mock data is automatically populated on first launch. To manually manage:
// Upload mock data
await DataMigration.uploadMockData();
// Clear mock data
await DataMigration.clearMockData();Done
- App setup, theming, bottom tabs (Map, Stories, Quests, Chats, Profile)
- Onboarding (welcome, video intro, basic info, vibe, invite code, location)
- Living map with markers, bottom sheet (video + connect/interested), full profile
- Full profile: video header, about, van details, photos, route mini-map, matching
- Stories feed (vertical video, like/comment, see on map, upload placeholder)
- Quests & adventure score (levels, quest board, points, leaderboard)
- Chat (conversation list, 1:1 messages, Coffee Ping, share location/media placeholders)
- Firebase: Auth (email/password), Firestore schema & rules, Storage rules, real-time streams, mock data migration; map uses Firestore
In progress / TODO
- Cloud Functions (matching, notifications)
- FCM push notifications
- Video upload/download (Storage rules ready)
- Filter control on map (Dating/Friends/Both)
- RevenueCat, paywall, polish, app icons & splash
- Framework: Flutter 3.8+
- State Management: Provider
- Backend: Firebase (Auth, Firestore, Storage)
- Maps: flutter_map with OpenStreetMap
- Video: video_player
- Payments: RevenueCat (planned)
- Firestore security rules enforce user permissions
- Storage rules restrict uploads to authenticated users
- All sensitive operations require authentication
- Invite-only access (planned)
flutter build apk --release
# or
flutter build appbundle --releaseflutter build ios --releaseThis is a hackathon/prototype project. See the requirements document for the full product vision.
Private project - All rights reserved
Built with ❤️ for the van life community