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, …)

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, …)