Skip to main content
Hero Light
Follow the steps bellow to get the core application up and running in under 5 minutes. After that you can start activating other services or setting up any of the demo applications.

Quick setup

Hi there 👋 - ready to build your mobile app? Let’s get into it!
1

Clone the repository

We’ll start by getting your project up and running locally:
ExpoShip TypeScript version
git clone https://github.com/rudolfsrijkuris/expo-ship-ts.git [YOUR_APP_NAME]
cd [YOUR_APP_NAME]
git remote remove origin
2

Environment variables

Rename .env.example to .env
.env
# Supabase
EXPO_PUBLIC_SUPABASE_URL=
EXPO_PUBLIC_SUPABASE_ANON_KEY=

# Revenue Cat
REVENUE_CAT_APPLE_KEY=
REVENUE_CAT_GOOGLE_KEY=

# One Signal
ONESIGNAL_APP_ID=
3

Install dependencies and run

We’ll install all the required packages and run it locally:
cli
npm install
npx expo prebuild
npx expo run ios
# OR
npx expo run android
Open simulator - your app should be up and running!
4

Customize app configuration

Open app.json. It is where you configure your app. Each key is documented to know how and why it’s used.
app.json
{
  "expo": {
    "name": "[YOUR-APP-NAME]", // App's name
    "slug": "[YOUR-APP-SLUG]", // App's slug
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png", // Location to your app's icon
    "scheme": "com.[YOUR-APP-NAME]", // This is used for supabase
    "userInterfaceStyle": "automatic",
    "splash": {
      "image": "./assets/images/splash.png", // Location to your app's splash screen
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "ios": {
      "supportsTablet": true,
      "bundleIdentifier": "com.[YOUR_APP_NAME].[YOUR_APP_NAME]app" // Your app's bundle identifier for iOS app
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/images/adaptive-icon.png", // Location to your app's adaptive icon
        "backgroundColor": "#ffffff"
      },
      "permissions": [
        "android.permission.RECORD_AUDIO"
      ],
      "package": "com.[YOUR_APP_NAME].[YOUR_APP_NAME]app" // Your app's package name for Android app
    },
    "web": {
      "bundler": "metro",
      "output": "static",
      "favicon": "./assets/images/favicon.png"
    },
    "plugins": [
      "expo-router",
      [
        "expo-image-picker",
        {
          "photosPermission": "The app needs access to your photos to set a profile picture."
        }
      ],
      "expo-localization",
      [
        "onesignal-expo-plugin",
        {
          "mode": "development"
        }
      ]
    ],
    "experiments": {
      "typedRoutes": true
    }
  }
}
After following these steps, the basic setup is done. You can now start activating other services (auth, payments, notifications, …)

Set up development environment

Set up your development environment

Set up Supabase

Set up user authentication with Supabase

Set up One Signal

Set up push notifications with One Signal

Set up Revenue Cat

Set up in-app purchases with Revenue Cat