First, make sure you set up your development environment.

Super Fast Resources for Shipping:

For AI Logo Creator:

For Email SMTP Service:

Brevo

Then, we are ready to clone the repo.

Open your terminal and run the following command:

1

git clone https://github.com/shipmobilefast/shipmobilefast.git [your-project-name]
2

cd [your-project-name]
3

npm install
4

npx expo install --check
5

git remote remove origin
6

Now we are ready to start the development server. But don’t start it yet.

npx expo start

That’s it! Our app is ready to be built.

But we are not done yet. We need to set up the app.json file.

1

First open your app.json file and find these lines:

app.json
 {
"expo": {
  "name": "My App",
  "slug": "my-app",
  "scheme": "com.myapp.app",
  ...
  "ios": {
    ...
    "associatedDomains": ["applinks:myapp.com"],
    "bundleIdentifier": "com.myapp.app",
    ...
  },
  "android": {
    ...
    "package": "com.myapp.app",
    ...
    "intentFilters": [
      {
        ...
        "data": [
          {
            "scheme": "https",
            "host": "myapp.com",
          },
          {
            "scheme": "com.myapp.app"
          }
        ],
      }
   ]
  },...
}
2

Find an app name for yourself. For example: Ship Mobile Fast.

3

Then create a slug for your app. For example: ship-mobile-fast.

4

Then create a bundle identifier for your app. For example: com.shipmobilefast.app.

I am using both same like: com.shipmobilefast.app.

5

Then replace the values with your own.

6

Result should look like this:

I am using shipmobilefast.com as my domain. If you don’t have one, you can delete the associatedDomains and data sections.

app.json
  "data": [
      {
        "scheme": "https",
        "host": "shipmobilefast.com",
      },
      // Don't delete this one 👇
      {
        "scheme": "com.shipmobilefast.app"
      }
    ]
  {
    "expo": {
      "name": "Ship Mobile Fast",
    "slug": "ship-mobile-fast",
    "scheme": "com.shipmobilefast.app",
    ...
    "ios": {
      ...
      "associatedDomains": ["applinks:shipmobilefast.com"],
      "bundleIdentifier": "com.shipmobilefast.app",
      ...
    },
    "android": {
      ...
      "package": "com.shipmobilefast.app",
      ...
      "intentFilters": [
        {
          ...
          "data": [
            {
              "scheme": "https",
              "host": "shipmobilefast.com",
            },
            {
              "scheme": "com.shipmobilefast.app"
            }
          ],
        }
      ]
    },
    ...
  }

Supabase

Now we need to set up Supabase.

1

cp .env.example .env
2

Now we need to set up the environment variables one by one. Start with Supabase.

3

Copy the URL and ANON KEY and paste them into the .env file.

Warning 1: Don’t forget to check .env file in the .gitignore file.

Warning 2: I strongly recommend to set up your own SMTP server. For example: Brevo. It is free up to 300 emails per day.

I am using it in all my projects.

You can use Resend too. It’s free 100 emails per day.

4

Now go to the Authentication section and add your app id: like: com.shipmobilefast.app.

5

Now open your codebase and let’s start your app.

  1. Open your terminal and run the following command:
// WITH EAS
eas build --profile development --platform ios
// WITHOUT EAS
npx expo prebuild
npx expo run:ios
// or
npx expo run:android
6

Probably you will see the error. eas.json must be created.

7

Open your codebase and create eas.json file.

8

Add this code into eas.json file:

eas.json
 "build": {
  "development": {
    "developmentClient": true,
    "distribution": "internal",
     "ios": {
      "simulator": true
    }
  },
9

Now run the following command again:

eas build --profile development --platform ios
10

Now your app is ready to be built. 🎉

Troubleshooting

If you don’t set your Supabase URL and ANON KEY in the .env file, you will see an error.

watchman watch-del-all

If you are using macOS, you can also install watchman using Homebrew.

brew install watchman