Saját termék — sportolók és egyesületek
Courtovo — az eredmény a csuklón
Egy órát labdamenet közben kezelnek, fél kézzel, odanézés nélkül. A Courtovo tíz sportágat számol a saját szabályai szerint, és tartósan offline működik.
A feladat
Egy órát játék közben kezelnek: fél kézzel, odanézés nélkül, tűző napon, gyakran nedves ujjal. Ehhez jön a szabályoldal — tíz sportág tíz szabálykönyvet jelent, amelyek szinte mindenben ellentmondanak egymásnak, és egy rosszul számolt tiebreak-rotáció rosszabb a papírnál.
A megoldás
Tiszta szabálymotor Kotlin Multiplatformban, Android, ki- és bemenet és óra nélkül. Ettől kimerítően tesztelhető a szabálykönyvek ellen anélkül, hogy bármikor órát kellene indítani — a tárolás, az érzékelők és a szinkronizáció kívül maradnak.
Az eredmény
Tíz sportág számolva, további tizenhárom mérve, 24 nyelv, tíz megjelenés — és mindez fiók és hálózat nélkül működik.
Közelebbről





Egy óránál nem a felület dönt el mindent, hanem az a határ, amit a szabályok köré
húzunk. A Courtovóban a scoring-core tiszta Kotlin Multiplatform modul: nincs
benne Android, nincs be- és kimenet, nincs óra. Hogy egy pont mit csinál az
állással, így olyan függvény, amely kimerítően ellenőrizhető anélkül, hogy
bármikor be kellene kapcsolni egy eszközt.
Ez ott térül meg, ahol a szabálykönyvek kellemetlenné válnak. Adogatási és fogadási sorrend párosban, térfélcsere, a Coman-tiebreak, a no-ad, a Fast4, a Champions-tiebreak — mindegyik önmagában ártalmatlan, együtt viszont pont ott téved a számláló. Ugyanez a motor JavaScriptre is fordul, így a weboldal ugyanazokra a vektorokra ellenőriz, amelyeken az óra fut.
Minden más szándékosan kívül van: a mérkőzésnapló kézzel írt SQL-ben a mellékelt SQLite-illesztőn, a mérés a Health Servicesen keresztül, az egyesülethez kapcsolódás pedig külön modulként. Ez a kapcsolat opcionális — kijelentkezve semmi nem hiányzik, mert a számolás, az előzmény és a mérés maga a tárgy, és nem függ szervertől.