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