Svazek obcí Východní Krkonoše v roce 2022 zavedl tzv. Kartu občana a Kartu hosta. Tato karta slibovala různé slevy. Ale aby se dala karta správně využít, musel mít Svazek nástroj, kterým by kartu načetl, zjistil jeho validitu a připojené slevy, případně, zda nebyla karta již tento den použita.
Jakub Rus mě tehdy oslovil, zda bych takovou aplikaci nenavrhl, vyrobil a neuvedl v provoz. Úkol to nebyl pro mě jednoduchý, takovou věc jsem dělal poprvé. Aplikace měla fungovat na všech platformách – iOS, Android, Windows i MacOs. Z tohoto důvodu jsme šáhli po řešení webové aplikace a to právě ve frameworku Flutter. Flutter totiž nabízí možnost kompilace do JavaScriptu a otevření ve webovém prohlížeči jako normální stránku. Samozřejmě byla skvělá představa, že by se v budoucnu mohla aplikace kompilovat přímo pro iOS i Android.
Testovaci Uzivatel: Heslo123
Testovaci Admin: Heslo123

Klíčové vlastnosti
- multiplatformní
- možnost škálování
- různé verze pro různé uživatele
- napojení na Lokální kartu Hosta od Feratel
- čtení QR
- administrace uživatelů v aplikaci
- uživatelské role
Struktura
Feratel nabízí API pro akceptaci karet, ale nenabízí administraci uživatelů, proto bylo nutné nejdříve zprovoznit přihlášení uživatele na náš vlastní server. Server pak obsluhoval komunikaci s API. Na základě uživatelského účtu se měnily end-pointy API – různé způsoby akceptace karty.
QR na webu
Čtení QR na webu nebyl úplně jednoduchý úkol, a i když existují balíčky, které tuto funkci nabízejí, ne vždy fungují. Hlavní problém je v tom, že na webu se obraz z kamery zobrazuje v canvasu. A až z něho to aplikace „vyčítá“. Zásadní je, že rozlišení konečného obrazu je závislé na velikosti canvasu, pokud je malý, je i malé rozlišení QR a může se stát, že jej jednoduchá čtečka (čtečka bez ML) nedokážeš přečíst. Proto bylo nutné obraz načítat do dialogu, který byl co největší. Pro podobné aplikace doporučuji online službu třetí strany, případně si něco takového „rozjet“ na svém vlastním serveru, hodně vám to ulehčí práci.
Vlastní Back-End
Vlastní server byla jednoduchá aplikace na webhostingu. Skládala se z PHP a MariaDB (SQL). Přihlášení do uživatelského účtu se provádělo pomocí JSON komunikace s PHP skriptem na serveru. Protože byl veliký tlak na čas, nepoužil jsem žádné GraphQL ani JWT OAUTH, protože konfigurace a naučení se s (pro mě) novou technologií by byla veliká ztráta času. Bylo tedy naplánováno, že na standardní komunikaci se přejde později. Uživatel se přihlašoval buď uživatelským jménem a heslem, nebo speciálním QR kódem. Tím získal token, podle kterého pak server poznal, který uživatel s ním komunikuje.
Server také musel obstarat komunikaci s API Feratelu. Při každém požadavku příhlášeným uživatelem se použil token, šlo o klasickou OAUTH autorizaci. Vždy se muselo ověřit, zda je token validní, pokud nebyl, muselo se zažádat o nový a znovu se přihlásit. Následně pak při každém požadavku ze serveru se použil bezpečnostní token a získala se data z end-pointu. Data se pak musela na serveru upravit a zaslat zpět do čtečky.
Jak to nakonec dopadlo
Na začátku roku 2023 jsme vydali první funkční verzi aplikace. Nasadila se na servery Svazku. Uživatelé byli různé pokladní a personál na Informacích. Aplikace fungovala většinu času bezproblémově, občas jsme museli ladit některé use-case. Bohužel v průběhu roku ze Svazku odešel vedoucí projektu. Nový vedoucí projektu ve spolupráci se mnou již nepokračoval.
Aplikace stále funguje, tedy bez komunikace s Feratel, ale lze na ní prezentovat, že i bez velké infrastruktury lze vyrobit rychlou a jednoduchou aplikaci, která zlepšuje lidem život.





Napsat komentář