QR kód: Ember Omnia na Google Play Evakuační zavazadlo je tradiční součást krizové připravenosti domácnosti - kufr nebo batoh s vodou, jídlem, doklady a lékárničkou, který má rodina po ruce, pokud musí během několika minut opustit byt. Problém není v tom, co do něj patří: seznamy kolují od HZS ČR i civilních iniciativ. Problém je v udržování. Voda a trvanlivé potraviny mají expiraci, léky se mění s předpisem, baterie v detektoru kouře je potřeba občas zkontrolovat a doklady je dobré mít fotograficky zálohované po každé výměně. V papírové nebo excelové podobě tenhle checklist reálně vydrží aktuální jen pár týdnů po sestavení.

Aplikace Ember Omnia (pracovní název projektu: Evakuační zavazadlo) řeší tenhle problém jako živý inventář - eviduje, co domácnost má mít, kolik toho reálně má, kdy jí to začne expirovat a co je potřeba pravidelně kontrolovat. Cílí na jednotlivce i rodiny (dospělí, děti, senioři, domácí mazlíčci) a je stavěná jako offline-first: appka musí fungovat bez připojení, protože v krizové situaci nemá spoléhání na internet smysl. Appka je teď dostupná jako webová appka (PWA) na blog.myscriptorium.cz/en/apps/evac/ - kdokoliv si ji může zdarma vyzkoušet, aktuálně v testovacím provozu. Paralelně vzniká i nativní verze pro Android, které se věnuje závěr článku.

Od nápadu k zadání

Vývoj začal klasickým product-requirements procesem - autor s Claude si nejprve ujasnili rozsah fáze 1 formou MRD dokumentu: jedno zařízení bez cloud synchronizace, jeden profil na uživatele, offline-first provoz mimo záložku s novinkami. Onboarding flow dostal pevný tvar: uvítací obrazovka, nastavení domácnosti (počet dospělých, dětí, seniorů, domácí zvířata podle druhu, doba udržitelnosti 48 hodin až 10 dní nebo vlastní hodnota), výběr šablon kategorií k importu, automatický přepočet množství podle profilu a nakonec dashboard.

Datový model byl navržen tak, aby zvládl škálovat na víc profilů později, i když fáze 1 počítala jen s jedním. Mimo scope byly od začátku explicitně vyřazeny: multi-profil, cloud sync mezi zařízeními, OCR čtení expirace z fotky dokladu, lokalizovaný feed zpráv podle polohy a sdílení profilu mezi uživateli - všechno odloženo do fáze 2.

Na startu zůstaly tři otevřené otázky: jakou platformu zvolit (nativní, nebo cross-platform), odkud brát zdroj krizových zpráv a jaký vizuální styl appka dostane. Padla shoda na řešení „klidné, důvěryhodné" - s volbou light/dark/color témat a bez plošné „panika-červené" barvy, vyhrazené jen pro skutečně kritické stavy.

Datový model a šablony

Jádrem appky je seed soubor s předpřipravenými šablonami - JSON struktura verzovaná přes template_version, rozdělená do osmi kategorií: Doklady a finance, Voda, Trvanlivé jídlo, Lékárnička, Technika a nářadí, Hygiena, Oblečení, Ostatní a podmíněná kategorie Domácí mazlíčci, která se importuje jen když profil obsahuje alespoň jedno zvíře.

Každá položka má typ - spotřební, trvalá, dokument nebo úkon - a appka s ní podle typu jinak zachází. Spotřební položky (voda, jídlo, léky) mají definovanou spotřebu na osobu a den; z ní appka při onboardingu spočítá požadované množství podle vzorce:

Trvalé a dokumentové položky (hasicí deka, multifunkční nůž, kopie rodného listu) se podle dnů neškálují - jen podle počtu osob nebo zvířat, případně mají pevné množství. Položky typu úkon (kontrola nádrže v autě, výměna baterie v detektoru kouře, aktualizace fotek dokladů) nemají expiraci, ale interval kontroly ve dnech, ze kterého appka odvozuje připomínku od data poslední kontroly.

Výsledný stav položky appka odvozuje sama: OK, chybí, brzy expiruje, expirováno nebo ke kontrole. Po importu může uživatel kteroukoliv vypočtenou hodnotu ručně přepsat, vypnout škálování a zadat pevné množství, nebo si založit vlastní kategorii a položku od nuly.

Co appka aktuálně umí

První spuštění appky provede uživatele čtyřkrokovým průvodcem. Nejdřív appka zjistí složení domácnosti - počet dospělých, dětí, seniorů a domácích mazlíčků (s výběrem druhu: pes, kočka, jiné) přes jednoduchá +/− počítadla. Následuje volba doby udržitelnosti zásob (48 h, 72 h, 5, 7 nebo 10 dní, případně vlastní počet dní). Třetí krok nabízí výběr kategorií šablon k naimportování a poslední krok je shrnutí, po jehož potvrzení se množství rovnou přepočte podle zadaného profilu a appka otevře Dashboard. Kterékoliv vypočtené množství jde po importu kdykoliv ručně upravit u konkrétní položky.

Hlavní obrazovka, Přehled, ukazuje procentuální připravenost zavazadla, sekci Vyžaduje pozornost s položkami, které chybí, brzy expirují nebo je potřeba zkontrolovat, a přehled kategorií s vlastní procentuální připraveností každé z nich. Uživatel může kdykoliv přidat vlastní kategorii; uvnitř kategorie jde položky přidávat, editovat i mazat. U každé položky appka eviduje typ, jednotku, požadované a aktuální množství, nepovinné datum expirace, vlastní předstih upozornění, interval kontroly u úkonů, poznámku a fotku.

Z Přehledu appka přepíná do Checklist módu - zjednodušeného zobrazení pro reálnou evakuaci. Ten drží jen checkboxy sbaleno/nesbaleno s procentuálním průběhem balení a tlačítkem Odškrtnout vše, bez jakékoliv možnosti editace: rychlá orientace ve stresu.

Samostatná záložka Novinky zobrazuje feed krizových a zpravodajských zpráv s ručním obnovením. V aktuální testovací verzi je zdrojem pro všechny uživatele jednotně BBC World News; appka počítá s vlastním feed enginem s uživatelsky nastavitelnými zdroji do budoucna.

Nastavení, personalizace a zálohy

Nastavení dovolují appku doladit k obrazu svému. Kromě přepínače jazyka a výběru z vizuálních témat - appka navazuje na patnáct barevných variant s vlastními fonty a CRT scanline efektem pro retro témata, které vznikly na původní webové verzi - jde tu upravit i profil domácnosti (dospělí, děti, senioři, mazlíčci, doba udržitelnosti). Testovací verze má jedno omezení: změna profilu zatím zpětně nepřepočítává množství u už existujících položek, ty je potřeba upravit ručně.

Notifikace se nastavují globálně (výchozí počet dní předstihu před expirací) i individuálně u konkrétní položky. Fungují ale nestejně napříč platformami: appka umí jednou denně upozornit na expiraci nebo kontrolu i bez otevření, ale jen když je nainstalovaná přes Chrome nebo Edge na Androidu nebo na desktopu - a i tam záleží na tom, jak často prohlížeč úlohu na pozadí skutečně spustí. V Safari na iOS to bez vlastního serveru nejde; appka tam upozorní vždy jen při otevření.

Appka dál umožňuje upravit koeficienty přepočtu spotřeby pro dítě a seniora (jako podíl spotřeby dospělého), jedním klikem označit roční revizi zavazadla jako hotovou a pracovat s daty i mimo appku - export zálohy do JSON souboru, jeho zpětné nahrání, nebo úplné smazání dat a start od nuly.

Instalace a testovací provoz

Appka běží jako Progressive Web App na blogu autora, na adrese blog.myscriptorium.cz/en/apps/evac/ - statickém webu postaveném z GitHub repozitáře a nasazovaném přes Vercel. Aktuální testovací verze nese označení RCv0.771 a appka je otevřená komukoliv, kdo si ji chce vyzkoušet zdarma, bez registrace.

Na Androidu a desktopu nabídne PWA appka instalaci na plochu přímo tlačítkem v nastavení; pokud už nainstalovaná je, nastavení to potvrdí zaškrtnutím. Na iPhonu a iPadu appka instalaci sama nabídnout neumí - funguje to jen přes Safari (ne přes Chrome na iOS) a vyžaduje tři ruční kroky: klepnutí na Sdílet, výběr Přidat na plochu a potvrzení. Nainstalovaná appka běží kompletně offline, s výjimkou stahování novinek.

Android verze

Vedle webové appky vzniká paralelně i nativní verze pro Android - Ember Omnia (Kotlin, Jetpack Compose, Room, WorkManager; balíček cz.ember.evakuace), aktuálně již veřejně vydaná na Google Play všem zdarma. Instalovaná appka jde dál než PWA: přidává modul World Health - kompozitní skóre globálního rizika portované z autorova webu newsandradio.cz, nabízí i jiné funkce - chrání citlivá data PIN zámkem a zálohuje je jako ZIP archiv. Aplikace je ve vývoji a kromě opravování chyb budeme rozvíjet i další funkce.

Nativní appka je zamýšlená jako referenční, hlavní verze - webová appka na blogu se aktualizuje ručně a podle potřeby, ne automaticky, takže může proti Androidu mírně zaostávat.

Appku si můžete rovnou vyzkoušet na blog.myscriptorium.cz/en/apps/evac/. A pokud vás baví středověká atmosféra, vyzkoušejte hru Scriptorium.