Bezpečnost je u dětí vždy na prvním místě. Díky moderním technologiím můžeme automaticky monitorovat bezpečí dětí v autě.
Cybex se rozhodl využít automatický monitoring ve svých autosedačkách a přišel za námi, abychom mu pomohli vytvořit moderní a funkční aplikaci pro rodiče. Aplikaci, která se připojí k senzorům autosedačky a rodičům pošle upozornění na mobil, pokud se objeví potenciální újma nebo nepohodlí.
„Cookielab je softwarová agentura, která pomáhá firmám a startupům budovat velké věci.
Pomohli jsme Cybexu vyvinout mobilní aplikaci SensorSafe, která zachraňuje životy. Zapojujeme se do projektů v různých fázích, pomáháme nejen s vývojem, ale také s řízením, invencí, dlouhodobou údržbou. Mluvíme o dlouhodobém partnerství.“
Co-founder Cookielab
Pro konzistentní zpracování asynchronně příchozích vstupních dat (např. Bluetooth, uživatelé nebo systémové změny) jsme použili koncept reaktivního programování (ReactiveX). To nám umožnilo vytvořit jasně definovaná schémata a procesy, kterými systém reaguje na danou sekvenci vstupů.
Dále jsme vytvořili strukturu nad knihovnou RxAndroidBLe, která řeší problémy různých zařízení Android a spravuje připojení mezi nimi.
Drželi jsme jádro aplikace co nejjednodušší, s minimální závislostí na knihovnách třetích stran. Spoléháme na Swift 5, CoreBluetooth, GRDB a naši vlastní knihovnu testování CoreBluetooth.
Komunikace se serverem je implementována prostřednictvím klienta Apollo GraphQL a uživatelské rozhraní se skládá z architektury UIKit a CleanSwift.
Naším cílem bylo navrhnout mobilní aplikaci pro senzory autosedaček. Dále zajistit celý vývoj a zaručit bezproblémovou funkčnost s různým hardwarem na globálních trzích. Největší výzvou však bylo zajistit bezchybnou komunikaci na všech platformách a mobilních zařízeních.
Odlišnost Bluetooth připojení na zařízeních od různých výrobců byla největší problém, protože ačkoliv Android poskytuje jednotné API, samotná zařízení mají různá schémata. Další výzvou byla udržitelnost a škálovatelnost komplexního projektu.
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
Pro tento projekt jsme sestavili sedmi členný produktový tým, který se postaral o vývoj, návrh a testování klientské aplikace. Hledali jsme platformu, která by nám pomohla s vývojem, dala se snadno odladit a hlavně byla spolehlivá.
Nakonec jsme přišli s unikátním řešením inspirovaným EventSourcingem, které tvoří páteř hybridní architektury. Díky tomu jsme schopni doladit a případně debugovat i ty nejexotičtější staty způsobené rozdíly v hardwaru, verzemi OS a různými podmínkami v terénu.
V nejnovější verzi jsme kompletně přepracovali aplikaci a využili potenciálu event sourcingu, který je přizpůsobený právě pro mobilní prostředí. To nám dalo možnost efektivně psát testovatelný kód a snadno implementovat změny funkčnosti.
Největší výhodou však je, že sourcing událostí nám dává možnost reprodukovat přesné chování aplikace na uživatelské úrovni a efektivně odhalovat a opravovat případné chyby. A to včetně dokončení regresních testů v budoucnu.
Mobilní aplikaci používá přes 500 tisíc spokojených uživatelů a aplikaci dále vylepšujeme.
Současně s tím, jak výrobce hardwaru vylepšuje senzory, vylepšujeme také klientskou aplikaci. V první polovině roku 2021 jsme zveřejnili novou verzi, která se připojuje přímo k senzoru bez OBD, což znamená větší pohodlí pro zákazníky.
Kromě hlavního poslání aplikace udržovat děti v bezpečí a zdraví oceňujeme spolupráci s mezinárodním týmem klienta, i když časový rozdíl USA x Evropa někdy hrály proti nám. :)
Další skvělá věc na projektu je volnost a možnost být kreativní – od počátečních specifikací přes wireframy, návrhy, vývoj a údržbu. Důvěra, kterou do nás Cybex vložil, je něco, za co jsme super vděční.