Basically, the mobile app consists of two components: the controller and the view layer.
The user interface of the app.
Developed in the native languages: Kotlin for Android and Swift for iOS.
The view layer interacts only with the controller.
The app business logic is realized in C++, and the component-based structure of the app is described in the Genie IDE according to the general rules of the Wasaby Framework for offline-first applications.
All interactions with the cloud are handled by the controller.
To serve user requests, the controller can initiate queries to the cloud asynchronously.
The layers are connected by bridging C++ types with the native programming languages.
The controller is a system of microservices communicating with each other.
A controller microservice is a set of business logic modules ensuring work with one bounded domain.
In its simplest form, a microservice can be described as a set of modules of the mobile platform core and one application module.
A controller microservice can have its own dedicated SQLite database. The microservice database is deployed and updated using the corresponding utility programs from the platform of offline-first applications.
A standard microservice consists of three main components:
A Djinni interface intended for the interaction of the UI with the application microservice
Functions as a storage of the microservice data and as a data bus between the CRUD facade and the synchronizer
A module intended for the interaction of the controller microservice with the cloud
The high running speed of the apps is ensured by
the library of components, which are saving resources.
<ion-card>
<ion-img src="/assets/myImg.png"></ion-img>
<ion-card-content>
<ion-card-header>
<ion-card-subtitle>Card Subtitle</ion-card-subtitle>
<ion-card-title>Card Title</ion-card-title>
</ion-card-header>
<p>Here’s a small text description for the card component.
Nothing more, nothing less.
</p>
<ion-item>
<ion-button fill="solid">Action</ion-button>
<ion-icon name="heart" slot="end"></ion-icon>
<ion-icon name="share" slot="end"></ion-icon>
</ion-item>
</ion-card-content>
</ion-card>