- Node.js > 12 and npm (Recommended: Use nvm)
- Watchman
- Xcode > 12
- Cocoapods 1.10.1
- JDK > 11
- Android Studio and Android SDK
- react-native-config to manage envionments.
- react-navigation navigation library.
- @react-native-async-storage/async-storage as storage solution.
- redux for state management.
- redux-persist as persistance layer.
- redux-thunk to dispatch asynchronous actions.
npm install -g react-native-cli
cd woofmeets
npm install / yarn
npx react-native run-android / yarn android
npm install -g react-native-cli
cd woofmeets
npm install / yarn
cd ios && pod install && cd ..
npx react-native run-ios / yarn ios
This template follows a very simple project structure:
src
: This folder is the main container of all the code inside your application.assets
: Asset folder to store all images, vectors, etc.components
: Folder to store any common component that you use through your app (such as a generic button) -theme
: Folder to store all the styling concerns related to the application theme. -UI
: Folder to store all the the general UI. -common
: Folder to store all the common components.constants
: Folder to store any kind of constant that you have.navigation
: Folder to store the navigators.screens
: Folder that contains all your application screens/features.Screen
: Each screen should be stored inside its folder and inside it a file for its code and a separate one for the styles and tests.Screen.tsx
Screen.styles.tsx
or in the sameScreen.tsx
as styles
storage
: Folder that contains the application storage logic.store
: Folder to put all redux middlewares and the store.test-utils
: Folder to store tests-related utilities and components.App.js
: Main component that starts your whole app.index.js
: Entry point of your application as per React-Native standards.utils
: Folder that contains the application utility like configuration and data types and dummy data
A map associating builds with env files is already defined in app/build.gradle
you can modify or add environments if needed.
For multiple enviroments to work you would need to change -keep class woofmeets.BuildConfig { *; }
on proguard-rules.pro
file.
The basic idea in iOS is to have one scheme per environment file, so you can easily alternate between them.
To create a new scheme:
-
In the Xcode menu, go to Product > Scheme > Edit Scheme
-
Click Duplicate Scheme on the bottom
-
Give it a proper name on the top left. For instance: "qa"
-
Then edit the newly created scheme to make it use a different env file. From the same "manage scheme" window:
Expand the "Build" tab on the left menu
- Click "Pre-actions", and under the plus sign select "New Run Script Action"
- Where it says "Type a script or drag a script file", type:
echo ".env.qa" > /tmp/envfile
replacing.env.qa
with your file.
-
Also, you will need to select the executable for the new schema:
Expand the "Run" tab on the left menu
- Under the "Executable" dropdown select the ".app" you would like to use for that schema
These are the steps to generate .apk
and .ipa
files
- Generate an upload key
- Setting up gradle variables
- Go to the android folder
- Execute
./gradlew assemble[Env][BuildType]
Note: You have three options to execute the project
assemble:
Generates an apk that you can share with others.
install:
When you want to test a release build on a connected device.
bundle:
When you are uploading the app to the Play Store.
For more info please go to https://reactnative.dev/docs/signed-apk-android
- Go to the Xcode
- Select the schema
- Select 'Any iOS device' as target
- Product -> Archive
For more info please go to https://reactnative.dev/docs/publishing-to-app-store
- Onboarding final new layout
- Provider Profile
- Stripe implementation for iOS and android
- My account
- My Pets CRUD
- Reschedule UI
- Inbox UI
- Settings New UI
- Specific UI for pet owner and sitter
APK install link: https://portal.testapp.io/apps/install/MkZ9zq3vgNy57