Sterblue Mobile is a mobile app that enables you to control your drone for automating complex tasks like 3D industrial inspections. Besides, it allows you to perform manual flights and collect data with full control of its outputs. This allows you to infer valuable insights easier and in less time than with classic drone apps.
The app is based on React Native making it easily compatible with iOS and Android platforms.
The integration with different drones is made by making an abstraction of the drone SDK in a JS API. This ensures fast interfaces with new types of drones while keeping it simple for developers working on the user interface.
If you want to learn more about the underlying technology have a look at the ecosystem section.
The app has been designed by trying to keeping the maximum amount of logic in JS. This design choice was made in order to ensure that compatibility with Android and iOS platforms could be done with little effort.
In the following diagram all the interfaces are depicted. The colors express the language in which is coded the interface:
green is for GraphQL
navy blue is for the drones SDK
the modules having access to the apollo client are included in a purple square
This is the user interface. It's what drone operators see on field and what allows them to interact with the different modules of the app. The whole UI is written in React Native, which makes it very easy for developers with some web development experience to be able to adapt it to their needs.
This is the module where the whole business logic is coded. When the user performs a calibration, clicks on the play button to launch a mission or executes any other action this is the module that commands all the needed actions.
The app uses Synapses in order to orchestrate the inspection workflow.
In order to interact directly with the backend this module creates and shares the apollo client with the whole app. It makes sure that the data stored in the device is properly fetched when the app is initialized, and saves every new write to the local storage so that the app can work in offline mode.
This module provides a high-level API that allows all the app to interact with the drone performing the inspection. Let it be flight management commands, camera actions or state observation, every interaction made with the drone passes through this module. The JS API is an abstraction of the SDK of the different compatible drones, making it common for all of them.
The apollo client is used as the glue that connects data from one place to another. Indeed, it enables not only to make queries and mutations to the backend services, but it stores and manages the local state of the app. This allows local data to be queried and modified in GraphQL, making the app readability easier.