Aplikácie

Aplikácie, ktoré sme si postavili sami — a denne ich používame. Dve si viete otvoriť hneď, tretiu vám založíme. Ďalšie tri bežia na našich vlastných dátach, takže ich tu len opíšeme.

Naše vlastné · na vlastnej doméne

Sú to naše vlastné appky, nie služba s podporou: bez cenníka, bez garantovanej dostupnosti, bez pohotovosti. Keď sa niečo pokazí, opravíme to — lebo ich používame aj my.

Partia na festivale, výlete či oslave · PWA · syntrofi.com

Syntrofi

Založíte akciu, rozošlete pozývacie odkazy a partia sa pridá — pozvánka autorizuje, prihlásenie len potvrdí, kto ste. Každý si označí, kam ide. Keď sa dva označené programy časovo prekryjú, appka to napíše rovno do zoznamu a menuje, s čím sa bijú. A vidíte, kam ide zvyšok partie — nie preto, aby ste išli s ním, ale aby ste vedeli, že sa o polnoci máte kde stretnúť.

Organizujete festival, výlet alebo oslavu pre partiu? Napíšte nám — akciu vám založíme. Ozvite sa →

Ako to vyzerá

Obrazovka konfliktov: dve dvojice vystúpení, pri jednej upozornenie „prekrýva sa o 15 min", pri druhej „len 10 min medzi nimi", pod nimi presun medzi scénami.
Kolízie. Keď sa dva označené programy prekryjú, appka to napíše rovno do zoznamu a menuje oboje aj s počtom minút.
Program s filtrami Kmeň, Miesto a Kategória; zapnutý filter „Ktokoľvek", pod vystúpeniami mená ľudí, ktorí naň idú.
Kam ide zvyšok partie. Filter zúži program na to, čo si označil ktokoľvek z kmeňa; pod každou položkou stoja mená.
Program akcie v terakotovo-tyrkysovej palete s kruhovou značkou v hlavičke.
Tá istá obrazovka v dvoch značkách (1/2): profil „syntrofi" — terakota a tyrkysová.
Tá istá obrazovka programu v jantárovo-fialovej palete, s iným písmom a inou značkou v hlavičke.
A to isté v profile „lubomier" (2/2). Mení sa paleta, písmo aj značka — dáta ani funkcie nie.

Snímky sú z ukážkových dát, nie z účtov skutočných ľudí.

Oficiálne festivalové appky mám v telefóne aj z Pohody, aj z Grapeu. Po dvoch dňoch ich prestanem otvárať. Túto sme na Ozore otvárali celý týždeň — bola jediná, čo fungovala aj tam, kde nebol signál, a jediná, v ktorej som videla, kam ide zvyšok partie.

Lenka OZORApp · OZORA Festival 2026

Balenie na cesty a kempy · PWA · farangur.com

Farangur

Každá vec prejde tromi stavmi: beriem → nachystané → zbalené, plus príznak dokúpiť. Katalóg má vyše dvesto vecí a každá udalosť si nesie predlohu, takže ďalšia cesta začína tam, kde tá minulá skončila. V skupine sa partia dohodne, kto čo prinesie — aby varič nebrali štyria a stan nikto.

Ako to vyzerá

Zoznam vecí po kategóriách, pri každej stav slovom; dve veci majú odznak „dokúpiť". Dole lišta s počtami beriem, chystám a balím.
Tri stavy každej veci: beriem → nachystané → zbalené. Čo treba ešte kúpiť, nesie príznak dokúpiť.
Obrazovka Spoločné: dve chýbajúce veci, pri jednej „zatiaľ nikto", pri druhej poznámka člena a jeho iniciálky, pod nimi zoznam pokrytých vecí.
V skupine je vidieť, čo ešte nikto nenesie — a pri čom sa už partia dohodla, kto a koľko.
Detail udalosti so zoznamom predlohy: deväť vecí po kategóriách a tlačidlo na začatie nového balenia.
Z hotovej cesty ostane predloha, takže ďalšie balenie nezačína prázdnym zoznamom.

Snímky sú z ukážkových dát, nie z účtov skutočných ľudí.

Očakávania vo dvojici · web · objatie.sk

Objatie

Dvaja partneri si nezávisle nastavia očakávania naprieč témami vzťahu a appka im ich potom odkrýva tému po téme — vždy len to, čo si už odhalili navzájom. Celý priebeh sa dá prejsť anonymne, bez účtu. AI komentár k výsledku dostane len názvy osí a hrubé pásmo, nikdy surové odpovede — surová odpoveď zo servera neodíde.

Ako to vyzerá

Obrazovka s výsledkom: kruhový ukazovateľ osemdesiatštyri percent zhody pre ukážkovú dvojicu.
Výsledok dvojice: jedno číslo zhody a pod ním témy, v ktorých sa rozchádzate najviac.
Porovnanie jednotlivých tém: pri každej posuvník a hodnoty oboch partnerov vedľa seba.
Téma po téme, s hodnotami oboch vedľa seba. Odhalí sa vždy len to, čo si obaja navzájom odhalili.

Snímky sú z ukážkových dát, nie z účtov skutočných ľudí.

Interné nástroje

Bežia na našich dátach, takže ich len opíšeme

Tieto tri nemajú v tomto texte jedinú snímku obrazovky, a je to zámer: v jednej sú faktúry, v druhej cudzie inzeráty a v tretej zdravotné dáta. Ukázať ich by znamenalo ukázať ich obsah.

  • Quvanto

    Účtovníctvo pre tri právne subjekty. FastAPI nad PostgreSQL, výpisy sa čítajú cez pdfplumber, faktúry vznikajú ako PDF cez WeasyPrint aj s by-square QR kódom. Platby odchádzajú buď ako SEPA XML vo formáte pain.001.001.03 na import do internetbankingu, alebo priamo cez platobné API banky, kde sa prístup k účtu aj zadanie platby vybavia jedným overením: celá dávka z jednej obrazovky a s jedným podpisom.

  • Inzerátor

    Predáva na Bazoši: nafotíte tovar, model ho rozpozná, cez našu vlastnú vyhľadávaciu službu dohľadá trhovú cenu a napíše slovenský inzerát; vy ho potvrdíte a appka ho zverejní. Model volá tú istú bránu ako všetko ostatné, takže appka nedrží kľúč k žiadnemu poskytovateľovi. A keďže Bazos blokuje IP adresu hostingu, prácu robí démon doma, ktorý nemá otvorený jediný port dovnútra a úlohy si preberá cez notifikáciu z databázy.

  • Health Bro

    FastAPI backend nad PostgreSQL, dostupný len cez VPN. Zbiera dáta z prsteňa a z Garminu a spája ich s tým, čo hodinky nevidia: doplnky, tréningy, laboratórne výsledky, ciele. Z toho skladá stav pripravenosti na dnešok — či ísť naplno, alebo cúvnuť. Testovacieho kódu je zhruba toľko čo produkčného a každé varovanie padá ako chyba.

Čo nás naučili

Učili sme sa postupne a každá z nich na inej vrstve.

OZORApp nás naučila, že „offline-first" nie je o vypnutej sieti, ale o sieti, ktorá klame: na maďarskej EDGE sieti sa volanie na server ani nesplnilo, ani neodmietlo — len viselo, takže service worker donekonečna čakal na odpoveď a aplikácia sa nenačítala vôbec, hoci ju mal človek celú v cache. Odvtedy nemáme v žiadnom projekte sieťové volanie bez vlastného timeoutu.

Inzerátor nás naučil čítať prekážku správne: keď WAF na strane Bazosu blokuje IP adresu hostingu, zlá odpoveď je prevŕtať dieru do domácej siete; správna je otočiť smer a nechať démona počúvať na databázovom kanáli.

Health Bro nás naučil, že meno poľa nie je kontrakt — pole s menom, ktoré sľubovalo sedem dní, potichu nosilo päťdesiatdeväť a objem dát posielaných modelu narástol na stotridsať kilobajtov skôr, než si to niekto všimol.

Objatie nás naučilo, že chyba nemusí byť v kóde: deploy nahrával len časť repozitára, takže registrácia, ktorá ležala v nenahranom súbore, fungovala lokálne a v ostrej prevádzke padala na päťstovku.

Farangur nás naučil aj to, čo sa neoplatí postaviť: fungovanie bez pripojenia bolo v návrhu tretinou zložitosti a padlo jedinou vetou — na cestu sa balíme doma pri wifi. Vedľa OZORApp, kde práve mŕtve pripojenie rozhodovalo o tom, či sa appka vôbec otvorí, je to ten istý problém s opačnou odpoveďou. Rozdiel nie je v technike, ale v tom, kde to má človek v ruke.

Syntrofi nás naučila, čo stojí kópia. Druhú generáciu sme urobili tak, že sme prvú skopírovali a prepísali v nej mená — a rozbili sme tým prihlásenie naraz na každom vstupnom bode, lebo cesta k súkromným dátam sa zrazu volala inak, než čakal kód. Odvtedy je akcia dáta, nie nový deploy, a nasadenie má poistku, ktorá tú cestu kontroluje.

A účtovníctvo nás naučilo to najdrahšie: kód nikdy nebol to najťažšie. Bankový súhlas expiruje zhruba každý deň, kým prístupový token žije mesiace — token sa teda vesele obnovuje nad súhlasom, ktorý je už mŕtvy, banka vráti chybu, ktorá o súhlase nepovie ani slovo, a vy hľadáte chybu vo svojom kóde. V dokumentácii to nenájdete. Nájdete to večer pred splatnosťou odvodov, keď dávka, ktorá minulý mesiac prešla, zrazu neprejde.

Potrebujete niečo takéto?

Postavíme to — a dodáme aj s kódom, potom je to vaše. Prenajímať vám späť váš vlastný softvér nie je náš biznis. Prvá hodina je zadarmo a končí rovnou odpoveďou vrátane „toto si nedávajte robiť".

Ozvite sa Čo presne robíme →