React (Web + Native) Starter Kit
For when you're looking to build 'the next big thing' for both web and native mobile.
👋 Intro
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
📖 Docs
- Setup your own Firebase
- Understanding the file structure
- FAQs & Opinions
- Testing, Deploying & Publishing
- Tests & testing (coming soon...)
- Contributing to this project
🚀 Getting Started
1. Clone and Install
*It's recommended that you install React Native Debugger and open before yarn start
.
# Clone the repo
git clone https://github.com/mcnamee/react-native-starter-kit.git
# Install dependencies
yarn install
2.1. Run the React Native App
# Start the React Native packager
yarn 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.
2.2. Run the Web App
# Starts are local live-reload server at:
# http://localhost:3001
yarn 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
👊 Further Help?
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.
💡 Inspiration
- 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 :)