It uses Turborepo and contains:
.github
└─ workflows
└─ CI with pnpm cache setup
.vscode
└─ Recommended extensions and settings for VSCode users
apps
└─ expo
├─ Expo SDK 50
├─ React Native using React 18
├─ Navigation using Expo Router
├─ Tailwind using Nativewind
└─ Typesafe API calls using tRPC
packages
├─ tmdb
└─ Typesafe API calls to The Movie Database
tooling
├─ eslint
| └─ shared, fine-grained, eslint presets
├─ prettier
| └─ shared prettier configuration
├─ tailwind
| └─ shared tailwind configuration
└─ typescript
└─ shared tsconfig you can extend from
-
Make sure you have XCode and XCommand Line Tools installed as shown on expo docs.
NOTE: If you just installed XCode, or if you have updated it, you need to open the simulator manually once. Run
npx expo startin the root dir, and then enterIto launch Expo Go. After the manual launch, you can runpnpm devin the root directory.+ "dev": "expo start --ios", -
Run
pnpm devat the project root folder.
-
Install Android Studio tools as shown on expo docs.
-
Change the
devscript atapps/expo/package.jsonto open the Android emulator.+ "dev": "expo start --android", -
Run
pnpm devat the project root folder.
TIP: It might be easier to run each app in separate terminal windows so you get the logs from each app separately. This is also required if you want your terminals to be interactive, e.g. to access the Expo QR code. You can run
pnpm --filter expo devandpnpm --filter nextjs devto run each app in a separate terminal window.
To add a new package, simply run pnpm turbo gen init in the monorepo root. This will prompt you for a package name as well as if you want to install any dependencies to the new package (of course you can also do this yourself later).
The generator sets up the package.json, tsconfig.json and a index.ts, as well as configures all the necessary configurations for tooling around your package such as formatting, linting and typechecking. When the package is created, you're ready to go build out the package.
This app is based on create-t3-turbo and Turborepo.