Expo is used to make react native applications. It provides a set of tools that simplify the development and testing of React Native app and arms you with the components of users interface and services that are usually available in third-party native React Native components. With Expo you can find all of them in Expo SDK.
Enatega is build using Expo it is powered with Expo SDK to give you access to your device capabilities and the Expo services to handle the heavy lifting of building your app binary and uploading it to the store, all without you touching Xcode or Android Studio. With the "bare" workflow, we also speed up your development with the Expo SDK and React Native, and you have full control over your iOS and Android projects.
React Navigation is used for routing and navigation in React Native apps. Navigator has some common elements which Enatega uses.
Its used to make a drawer when a user swipes from left to right or presses the drawer icon
Stack Navigator stacks screens on top of each other and only one screen is shown at a time
Switch Navigator is used for the authentication flow inside application. Currently no authentication happens in Enatega but for good practice all routing related to authentication is made using this
GraphQL is a substitute for REST architecture modern applications aren't fit for REST. The reason is the point-to-point nature of REST, a procedural API technology, forces the authors of services and clients to coordinate each use case ahead of time. When frontend teams must constantly ask backend teams for new endpoints, often with each new screen in an app, development is dramatically slowed down. Both teams need to move fast independently.
For Application level state management conventionally Redux is used but in our app we have used Apollo's built in state management. The problem with Redux is too much boiler code which bloats code and has a strong learning curve for new user. Since we are already using Apollo for replacement to REST without using any third party state management libraries we have used it's built in State management provided by Apollo Client. Our application is a medium size application and works very well with it.