“Safety first” means a lot when discussing babies. With modern technology, we can monitor children’s security in the car automatically, enabling families around the world to provide maximum protection for their little ones.
Cybex decided to take advantage of automatic monitoring in their car seats, and they came to us to help them to create a modern, functional application for parents. It connects to the car seat’s sensors and notifies parents on their mobile phones if any possible harm or discomfort appears.
“Cookielab is a software agency that helps companies and startups build big things.
We helped our client Cybex develop a mobile application SensorSafe that saves lives. We are involved in projects at various stages, we help not only with development, but also with management, invention, and long-term maintenance. We are talking about a longer-term partnership.”
Co-founder Cookielab
For the consistent processing of asynchronously-incoming input data (e.g. Bluetooth, users, or system changes), we used the concept of reactive programming (ReactiveX). This allowed us to create clearly defined schemes and processes for how the system responds to a given sequence of inputs.
Further, we created a structure above the RxAndroidBLe library that both solves the challenge of different Android devices, and manages connection across them.
We kept the app’s core as simple as possible, with minimal dependence on third party libraries. We rely on Swift 5, CoreBluetooth, GRDB, and our own library of CoreBluetooth’s testing.
Server communication is implemented through Apollo GraphQL client, and the UI consists of UIKit and CleanSwift architecture.
Our mission was to design a mobile app for use with car seats sensors, to secure the entire development process, and to make sure the app worked seamlessly with different hardware across different global markets. The biggest challenge was to fine tune flawless communication on all platforms and mobile devices.
The diversity of Bluetooth connection on devices by various producers concerned us the most, because, although Android provides a unified API, different devices have different schemes. Another challenge was the sustainability and scalability of such a complex project.
EventSourcing-like hybrid architecture
Swift 5
CoreBluetooth
UIKit
Apollo iOS GraphQL client
GRDB
GraphQL (Apollo)
Reactive X (RxJava)
RxBleAndroid
Event sourcing, Protobuf
Firebase (Crashlytics, in-app messaging, cloud messaging)
Lottie, Dagger, Room
Infrastructure: AWS, Kubernetes (EKS), Terraform, auto scaling
Microservice architecture (graphQL, auth over JWT)
Typescript and nodejs, PostgreSQL
We set up a dedicated product team for the project, allocating seven people in total to develop, design, and test the client’s app. We sought a platform that would help us with development, could be easily debugged, and, above all, was reliable.
In the end, we came up with a unique solution inspired by EventSourcing that forms the backbone of the hybrid architecture. Thanks to this, we are able to fine tune and debug even the most exotic statuses caused by differences in hardware, versions of the OS, and miscellaneous conditions in the field.
In the latest version, we completely redesigned the app under the hood and used the potential of event sourcing, which is customized for the mobile environment. This gave us the ability to efficiently write testable code and easily implement functionality changes. The biggest advantage, however, is that event sourcing gives us the ability to reproduce the exact behavior of the app at the user level, and effectively detect and correct bugs, including the completion of regression tests in the future.
The mobile application is already used by 500k satisfied users. We are constantly improving the app, and we have completely redesigned the application under the hood. Now, we can offer communication with new client’s products, as well.
As the hardware producer improves their sensors, we improve the client’s app. In the first half of 2021, we published a new version that connects directly to the sensor without OBD, translating into more comfort for customers. Hopefully, we will be able to fine-tune the app further and incorporate more customer feedback in the future.
Apart from the essential purpose of the app-keeping children safe and healthy, we appreciate the cooperation with the client’s international team, even though time zone issues between the US and Europe sometimes worked against us.
Another great thing about the project is that we had the liberty to be creative-from the initial specifications through wireframes, design, development, and maintenance. The trust Cybex put in us is something we are particularly grateful for.