How to start use?
npx react-native init AwesomeApp --template https://github.com/CrisangerA/react-native-template-clean-arch.git
Why this template? What needs does it solve?
The main function of this template is to meet the requirements of modern applications in terms of scalability and maintainability over time. That is why it was implemented with the concept of clean architecture (Onion architecture).
The main motivation for this template is to use as many native features as possible for the requirements of modern applications such as scalability and maintainability over time. The reason for using native platform features is because they offer better performance than features that run on the JS thread.
Among other things the project includes this plugin https://www.npmjs.com/package/eslint-plugin-hexagonal-architecture that will help you to build the rest of your application with the onion architecture concept https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html.
Configuration
Global configuration of styles, api routes, navigation and dependency injection are located in src/config.
- Navigation
- Define type of root navigation
- If you created a new screen describe it here. Only Screens not Modals
- Style
- Colors
- Font Sizes
- Spacings
Strucure folders
Extra
- Hermes Engine
- Dependency Injection
- React Native Turbo Modules (New Architecture)
- Animations between screens
- Eslint Plugin Hexagonal Architecture
Features
Verify the versions in the package.json
-
React Native 70.x
-
Typescript
-
Typed-Inject Lightweight dependency injection container for JavaScript/TypeScript
-
[]React Native Keychain key Keychain Access for React Native
Implemented software principles
- Single responsibility
- Liskov substitution
- Interface segregation
- Dependency inversion
- Pattern repository
Uplabs design
Screenshots -Troubleshoot
-
For Firebase you only need generate google-services.json credentials. See the docs
-
The test are made in Linux - Ubuntu 20.04. If you have a problem related with CMAKE as me, You should install this packages: