This boilerplate launches with a React web app and React Native app sharing a single code base. It shares the 'business logic' (i.e. actions, containers, reducers) across the platforms, whilst allowing flexibility in View components to ensure your project looks and feels native in each platform.
The project is super helpful to kick-start your next project, as it provides a lot of the common tools you may reach for, all ready to go. Specifically:
- A shared React and React Native structure
- Flux architecture
- Routing and navigation
- React Native Router Flux for native mobile
- React Router for web
- Data Caching / Offline
- UI Toolkit/s
- Native Base for native mobile
- Bootstrap for web
- Simpler mobile app development through
- User authentication example through
- API/Data example
- Shows how to read/write data from/to an external API (in our case, Firebase)
- Code Linting with
- Airbnb's JS Linting guidelines
- Setup your own Firebase
- Understanding the file structure
- FAQs & Opinions
- Testing, Deploying & Publishing
- Tests & testing (coming soon...)
- Contributing to this project
# Clone the repo
git clone https://github.com/mcnamee/react-native-starter-kit.git
# Install dependencies
npm i
# Start the React Native packager
npm start
Instructions are shown in the terminal. You can select to open it in:
- An emulator (either iOS or Android)
- Your mobile device with the Expo app. It will reload if you save edits to your files and you will see build errors and logs in the terminal.
# Starts are local live-reload server at:
# http://localhost:3001
npm run web
Via webpack, starts a localhost server on port 3001 http://localhost:3001.
- Save code and it auto refreshes
- Install Redux DevTools into Chrome to see the state of Redux
This repo is a great place to start, but if you'd prefer to sit back and have your new project built for you, get in touch with me directly and I can organise a quote.
- This blog post helped put the ideas into action
If there's any other ideas presented in this repo, that you think worth mentioning - feel free open a pull request :)