This is fullstack React Native opinionated boilerplate with Expo-router, Tamagui, Recoil and Next.js supporting Android, iOS and Web based on turbo repo
- Android (Expo 49)
- iOS (Expo 49)
- Web (Next.js 13.4.10)
npx degit mononoke-choi/bandi my-project
cd my-project && yarn install
cd apps/native && yarn ios:build:local
yarn dev
It uses expo-dev-client. create your own Development Client first
- Turbo Repo
- TypeScript
- React Native
- React Native For Web
- React
- Recoil
- Expo
- Expo Router
- MMKVStorage
- FlashList (Virtualized list for Native)
- Tanstack Virtual (Virtualized list for Web)
- React-native-swiper (carousel for Native)
- Embla-carousel-react (carousel for Web)
- Detox
- Tamagui
- Next.js
- Swagger
- Solito
- Orval
- Svgr
- Mono repository support
- ESLint and Prettier configurations
- Use Route handler of Next.js as an API layer of React Native
- Send Slack message using Route handler when your Expo Application Services (EAS) build or submission has completed
- Recoil sync with MMKV Storage for State persistence
- Generate REST API fetchers based on openAPI specification generated by Swagger written in Route handler
- File system-based routing of Native app like Next.js
- Real world examples
├───apps
│ └───native
│ └───web
├───packages
│ └───api
│ └───eslint-config-custom
│ └───tsconfig
│ └───ui
In general, root package.json is used to manage mono repository
postinstall
: Install missing TypeScript typings for dependencies in your package.jsondev
: Starts the development server metro (native) and webpack (web)build
: build Next.js app for productionclean
: Clear build outputspostclean
: Install after running clean scriptlint
: Lints the code using ESLintprettier
: Checks the code for proper formattingcheck-deps
: Check your unmatched dependency versions