Below you'll find information about performing common tasks.
- Introduction
- A. Getting started
- B. Build release
- C. Template folder structures
- Easy to start
- React-native version 0.73.0
- Fully using typescript for typing
- Folder structure using package-by-feature (why)
- Redux-toolkit, redux-saga, redux-persist, redux-logger
- React-navigation v6
- 100% functional component with hooks
- A lot of custom/base components
- i18next for multiple languages
- Custom hooks for share state logic between components
- Install libraryß If Yarn was installed when the project was initialized, then dependencies will have been installed via Yarn, and you should probably use it to run these commands as well. Unlike dependency installation, command running syntax is identical for Yarn and NPM at the time of this writing.
Setting up the development environment https://reactnative.dev/docs/environment-setup
Runs your app in development mode.
npm start --reset-cache
# or
yarn start --reset-cache
Run project env:
- build android: 1.1 yarn 1.2 yarn clean-android 1.2 yarn android-build-apk-develop
- Build ios: 2.1 yarn 2.2 cd ios && pod install 2.2 open file EnvApp.xcworkspace 2.3 select schema EnvApp(Dev) 2.4 Clean Build Folder 2.5 Archive
.
├── App.tsx
├── Gemfile
├── Gemfile.lock
├── reactotron.config.js
├── __tests__
│ └── App.test.tsx
├── app.json
├── commitlint.config.js
├── defaultIcon.jpeg
├── environment
├── index.js
├── jest.config.js
├── metro.config.js
├── package.json
├── patches
│ ├── react-native+0.73.0.patch
│ ├── react-native-code-push+8.1.0.patch
│ ├── react-native-image-crop-picker+0.40.2.patch
│ ├── react-native-keyboard-aware-scroll-view+0.9.5.patch
│ └── react-native-size-matters+0.4.2.patch
├── react-native.config.js
├── settings.json
├── src
│ ├── App.tsx
│ ├── api
│ │ ├── interface
│ │ │ ├── authenticate.ts
│ │ │ └── general.ts
│ │ ├── modules
│ │ │ └── api-app
│ │ │ ├── authenticate.ts
│ │ │ ├── general.ts
│ │ │ └── notification.ts
│ │ └── request.ts
│ ├── app-redux
│ │ ├── hooks.ts
│ │ ├── sagas
│ │ │ ├── resourceSaga.ts
│ │ │ ├── rootSaga.ts
│ │ │ └── userInfoSaga.ts
│ │ ├── slices
│ │ │ ├── initSlice.ts
│ │ │ ├── languageSlice.ts
│ │ │ ├── resourceSlice.ts
│ │ │ ├── types.ts
│ │ │ └── userInfoSlice.ts
│ │ └── store.ts
│ ├── assets
│ │ ├── fonts
│ │ │ ├── Montserrat-Light.ttf
│ │ │ ├── Montserrat-Regular.ttf
│ │ │ └── Montserrat-SemiBold.ttf
│ │ ├── icon
│ │ │ ├── ic_account.png
│ │ │ ├── ic_back.png
│ │ │ ├── ic_calendar.png
│ │ │ ├── ic_check_radio.png
│ │ │ ├── ic_check_square.png
│ │ │ ├── ic_home.png
│ │ │ ├── ic_notification.png
│ │ │ ├── ic_select.png
│ │ │ ├── ic_setting.png
│ │ │ ├── ic_uncheck_radio.png
│ │ │ └── ic_uncheck_square.png
│ │ ├── images.ts
│ │ ├── locates
│ │ │ ├── en.ts
│ │ │ └── jp.ts
│ │ ├── metrics.ts
│ │ ├── photo
│ │ │ └── img_default_image.png
│ │ ├── sizes.ts
│ │ └── themes.ts
│ ├── components
│ │ ├── base
│ │ │ ├── AlertMessage.ts
│ │ │ ├── CheckBox.tsx
│ │ │ ├── ProgressiveImage.tsx
│ │ │ ├── StyledButton.tsx
│ │ │ ├── StyledIcon.tsx
│ │ │ ├── StyledImage.tsx
│ │ │ ├── StyledIndicator.tsx
│ │ │ ├── StyledInput.tsx
│ │ │ ├── StyledInputForm.tsx
│ │ │ ├── StyledList.tsx
│ │ │ ├── StyledModalDropdown.tsx
│ │ │ ├── StyledNoData.tsx
│ │ │ ├── StyledOverlayLoading.tsx
│ │ │ ├── StyledSectionList.tsx
│ │ │ ├── StyledText.tsx
│ │ │ ├── StyledTouchable.tsx
│ │ │ ├── StyledWebView.tsx
│ │ │ ├── index.ts
│ │ │ ├── list-view-selected
│ │ │ │ ├── StyledListViewSelected.tsx
│ │ │ │ └── components
│ │ │ │ └── ItemListViewSelected.tsx
│ │ │ ├── modal
│ │ │ │ ├── ModalizeCenterComponent.tsx
│ │ │ │ └── ModalizeManager.tsx
│ │ │ └── picker
│ │ │ ├── StyledDateTimePicker.tsx
│ │ │ └── StyledModalPicker.tsx
│ │ └── common
│ │ ├── CodePushProgressDialog.tsx
│ │ └── StyledHeader.tsx
│ ├── feature
│ │ ├── authentication
│ │ │ ├── ChangePassword.tsx
│ │ │ ├── ForgotPwdScreen.tsx
│ │ │ ├── LoginScreen.tsx
│ │ │ ├── RegisterScreen.tsx
│ │ │ └── SendOtp.tsx
│ │ ├── home
│ │ │ ├── BlogDetail.tsx
│ │ │ ├── BlogList.tsx
│ │ │ ├── HomeDetailScreen.tsx
│ │ │ ├── HomeScreen.tsx
│ │ │ ├── QrCodeDetail.tsx
│ │ │ ├── UpdateInformation.tsx
│ │ │ ├── WebPdf.tsx
│ │ ├── notification
│ │ │ └── index.tsx
│ │ │ └── NotificationDetail.tsx
│ │ │ └── NotificationScreen.tsx
│ │ ├── profile
│ │ │ └── components
│ │ │ ├── ItemProfile.tsx
│ │ │ └── CertificateDetail.tsx
│ │ │ └── CheckIn.tsx
│ │ │ └── LoginScreen.tsx
│ │ │ └── Profile.tsx
│ │ │ └── ProfileDetail.tsx
│ │ │ └── QrCodeDetail.tsx
│ │ ├── qrCode
│ │ │ └── QrCodeInfo.tsx
│ │ │ └── QrCodeScreen.tsx
│ ├── hooks
│ │ ├── useApi.ts
│ │ ├── useInput.ts
│ │ ├── usePaging.ts
│ │ └── usePagingTakeAfter.ts
│ ├── navigation
│ │ ├── NavigationService.ts
│ │ ├── components
│ │ │ └── StyledTabBar.tsx
│ │ ├── config
│ │ │ ├── options.ts
│ │ │ ├── routes.ts
│ │ │ └── transition.ts
│ │ └── scene
│ │ ├── AuthScenes.tsx
│ │ ├── RootScenes.tsx
│ │ └── TabScenes.tsx
│ └── utilities
│ ├── CommonInterface.ts
│ ├── SocketProvider.tsx
│ ├── authenticate
│ │ ├── AuthenticateService.ts
│ │ └── TokenProvider.ts
│ ├── enum.ts
│ ├── format.ts
│ ├── helper.ts
│ ├── i18next.ts
│ ├── logger.ts
│ ├── notification
│ │ └── index.ts
│ ├── permissions
│ │ └── index.ts
│ ├── react-i18next.d.ts
│ ├── staticData.ts
│ ├── types
│ │ └── typing.d.ts
│ ├── upload
│ │ ├── ImagePicker.tsx
│ │ └── ImageUploader.ts
│ ├── validate.ts
│ └── yupValidate.ts
├── tsconfig.json
└── yarn.lock
43 directories, 131 files