The only requirement is having Node.js & Bun installed - install Node.js with nvm and install Bun
Follow these steps:
# Step 1: Clone the repository using the project's Git URL.
git clone git@github.com:sddion/geoshot.git
# Step 2: Navigate to the project directory.
cd geoshot
# Step 3: Install the necessary dependencies.
bun i
# Step 4: Start the instant web preview of your app in your browser, with auto-reloading of your changes
expo start-web
# Step 5: Start iOS preview
# Option A (recommended):
expo start # then press "i" in the terminal to open iOS Simulator
# Option B (if supported by your environment):
expo start -- --iosThis project is built with the most popular native mobile cross-platform technical stack:
- React Native - Cross-platform native mobile development framework created by Meta and used for Instagram, Airbnb, and lots of top apps in the App Store
- Expo - Extension of React Native + platform used by Discord, Shopify, Coinbase, Telsa, Starlink, Eightsleep, and more
- Expo Router - File-based routing system for React Native with support for web, server functions and SSR
- TypeScript - Type-safe JavaScript
- React Query - Server state management
- Lucide React Native - Beautiful icons
- iOS: Download the Ppp from the App Store or Expo Go
- Android: Download the Expo Go app from Google Play
- Run
expo startand scan the QR code from your development server
Run bun start-web to test in a web browser. Note: The browser preview is great for quick testing, but some native features may not be available.
You can test apps in Expo Go or iOS app. You don't need XCode or Android Studio for most features.
When do you need Custom Development Builds?
- Native authentication (Face ID, Touch ID, Apple Sign In)
- In-app purchases and subscriptions
- Push notifications
- Custom native modules
Learn more: Expo Custom Development Builds Guide
If you have XCode (iOS) or Android Studio installed:
# iOS Simulator
expo start -- --ios
# Android Emulator
expo start -- --android-
Install EAS CLI:
bun i -g @expo/eas-cli
-
Configure your project:
eas build:configure
-
Build for iOS:
eas build --platform ios
-
Submit to App Store:
eas submit --platform ios
For detailed instructions, visit Expo's App Store deployment guide.
-
Build for Android:
eas build --platform android
-
Submit to Google Play:
eas submit --platform android
For detailed instructions, visit Expo's Google Play deployment guide.
Your React Native app can also run on the web:
-
Build for web:
eas build --platform web
-
Deploy with EAS Hosting:
eas hosting:configure eas hosting:deploy
Alternative web deployment options:
- Vercel: Deploy directly from your GitHub repository
- Netlify: Connect your GitHub repo to Netlify for automatic deployments
This template includes:
- Cross-platform compatibility - Works on iOS, Android, and Web
- File-based routing with Expo Router
- Tab navigation with customizable tabs
- Modal screens for overlays and dialogs
- TypeScript support for better development experience
- Async storage for local data persistence
- Vector icons with Lucide React Native
βββ app/ # App screens (Expo Router)
β βββ (tabs)/ # Tab navigation screens
β β βββ _layout.tsx # Tab layout configuration
β β βββ index.tsx # Home tab screen
β βββ _layout.tsx # Root layout
β βββ modal.tsx # Modal screen example
β βββ +not-found.tsx # 404 screen
βββ assets/ # Static assets
β βββ images/ # App icons and images
βββ constants/ # App constants and configuration
βββ app.json # Expo configuration
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
For advanced native features, you'll need to create a Custom Development Build instead of using Expo Go.
- Native Authentication: Face ID, Touch ID, Apple Sign In, Google Sign In
- In-App Purchases: App Store and Google Play subscriptions
- Advanced Native Features: Third-party SDKs, platform-specifc features (e.g. Widgets on iOS)
- Background Processing: Background tasks, location tracking
# Install EAS CLI
bun i -g @expo/eas-cli
# Configure your project for development builds
eas build:configure
# Create a development build for your device
eas build --profile development --platform ios
eas build --profile development --platform android
# Install the development build on your device and start developing
bun start --dev-clientLearn more:
Integrate with backend services:
- Supabase - PostgreSQL database with real-time features
- Firebase - Google's mobile development platform
- Custom API - Connect to your own backend
Implement user authentication:
Basic Authentication (works in Expo Go):
- Expo AuthSession - OAuth providers (Google, Facebook, Apple) - Guide
- Supabase Auth - Email/password and social login - Integration Guide
- Firebase Auth - Comprehensive authentication solution - Setup Guide
Send notifications to your users:
- Expo Notifications - Cross-platform push notifications
- Firebase Cloud Messaging - Advanced notification features
Web & Credit Card Payments (works in Expo Go):
- Stripe - Credit card payments and subscriptions - Expo + Stripe Guide
- PayPal - PayPal payments integration - Setup Guide
Native In-App Purchases (requires Custom Development Build):
- RevenueCat - Cross-platform in-app purchases and subscriptions - Expo Integration Guide
- Expo In-App Purchases - Direct App Store/Google Play integration - Implementation Guide
Paywall Optimization:
- Superwall - Paywall A/B testing and optimization - React Native SDK
- Adapty - Mobile subscription analytics and paywalls - Expo Integration
For web deployments, you can use custom domains with:
- EAS Hosting - Custom domains available on paid plans
- Netlify - Free custom domain support
- Vercel - Custom domains with automatic SSL
For mobile apps, you'll configure your app's deep linking scheme in app.json.
- Make sure your phone and computer are on the same WiFi network
- Try using tunnel mode:
bun start -- --tunnel - Check if your firewall is blocking the connection
- Clear your cache:
bunx expo start --clear - Delete
node_modulesand reinstall:rm -rf node_modules && bun install - Check Expo's troubleshooting guide
- Check Expo's documentation for native APIs
- Browse React Native's documentation for core components