Small Description about this project
To run this app, following this commands:
- Install the dependecies:
npm install
- If you are running on ios, run
pod install
in the ios folder - Run the project:
- For ios:
npx react-native run-ios
- For Android:
npx react-native run-android
The project architecture is based on concepts on Clean Archicteture taking in account separate the responsibilities following this approach:
- Config: It is in charge of having the specific settings of the application, api urls, passwords, tokens etc..
- Services: They are in charge of having the logic to conect with internal or external services like APIs or Local tools
- Providers: They are in charge of having the logic to connect the services with the app storage and handle how and when update them
- ContainerComponents: They are in charge of having the business logic to decide what data or behavior send to
Presentation Components
through props drilling - PresentationComponents: They are in charge of having the logic and styles to determine how and when print the visual components
- Types: They are in charge of having all the data types what will be using in all the application
- Typescript: I chose use this such the base of the project due to their multiples advantages that saves you time catching errors and providing fixes before you run code to see more Typescript pros and cons
- React native elements: I chose this UI Toolkit over some other like UI kitten because of to be simple and easy to use for small projects that not require to many custom components
- react-native-async-storage: I chose this tool over some other like
realm
orreact-native-sqlite-storage
or some other because their performance and to be simple to use for no too complex data entities - @react-navigation/native: I chose this navigation tool to be the most common use it for this their documentation it's so complete and work perfectly for ios and android
- react-native-gesture-handler: I chose this tool to control the user gestures due to be the most updated and with the best documentation over some others like react-native-swipe-list-view or react-native-swipeable, also require a minimal configuration and work perfect for android and ios without side effects