Application written using Redux library (with official React bindings for Redux) which implements the idea of Flux pattern but in quite a simpler way. It means that app has a unidirectional data flow that makes it easy to develop applications that are easy to test and maintain.
In Redux there's a
Storewhich holds aStateobject that represents the state of the whole application. Every application event (either from the user or external) is represented as anActionthat gets dispatched to aReducerfunction. ThisReducerupdates theStorewith a newStatedepending on whatActionit receives. And whenever a newStateis pushed through theStoretheViewis recreated to reflect the changes.
For navigation app uses react-navigation and react-navigation-stack - the community solution as standalone library.
Persistence is implemented via redux-persist library which stores information from Redux State to a database using async-storage extension.
Application also uses react-native-swipeable-row for swipe actions on the list items and moment for date and time manipulations.
