01 Problém
Mezinárodní tiskové a hospitality akce s desítkami vozů, řidičů a stovkami hostů se koordinovaly přes tabulky, telefonáty a chatové skupiny. Nikdo neměl jeden živý přehled o tom, kde vozy jsou, kdo je řídí a co je na řadě.
02 Co aplikace dělá
- Registrace hostů s QR kódy, check-in na místě a badge (QR i NFC).
- Správa flotily: vozy, rezervace s kontrolou překryvů, jízdy, předávky s fotkami, smlouvy podepisované v aplikaci.
- Živý dispečink: mapa flotily z GPS jednotek, dostupnost a cíle řidičů, uložené trasy, zóny a plánky.
- Mobilní aplikace pro řidiče, TV kiosek se zabezpečeným párováním, směny posádky, doklady, účtenky a exporty a auditní log, do kterého se jen přidává.
03 Architektura
- 01 ClientsWebová aplikace v Next.js, samostatná dispečerská aplikace v Next.js, Flutter aplikace pro řidiče, TV kiosek
- 02 APIModulární monolit v NestJS (~30 doménových modulů), JWT + RBAC v rozsahu akce
- 03 RealtimeAutentizované SSE invalidace s periodickými checkpointy a pollingem jako zálohou
- 04 TelemetryPříjem dat z GPS jednotek flotily, vykreslení mapy Mapbox jako sdílený balíček
- 05 DataPostgreSQL s Drizzle; zámky řádků, verzování a částečné unikátní indexy brání konfliktním jízdám
- 06 OpsDocker Compose na Linux VPS: API, web, dispečink, Postgres, Redis
04 Technologie
NestJSTypeScriptDrizzlePostgreSQLRedisNext.jsFlutterMapboxSSEDocker
05 Jak jsem pracoval s AI
Systém rostl pod reálnými termíny mezi akcemi, takže agenti pracovali modul po modulu podle sepsané mapy modulů s jasnými stavy (MVP, scaffold, post-MVP). Pravidla souběhu, třeba že vůz nikdy nemá dvě aktivní jízdy, vynucuje databáze a nespoléhají na vygenerovaný aplikační kód. Každá změna schématu šla do provozu až po záloze.
06 Co je ověřené
- Běží v produkci: kontejnery API, webu, dispečinku, Postgresu a Redisu jsou na serveru spuštěné (ověřeno v říjnu 2026).
- Použito na reálných akcích; v aktivním vývoji (poslední commity v říjnu 2026).
- ~30 API modulů, 3 frontendy, 14 testovacích souborů.
07 Upřímné poznámky
- Názvy klienta, značky a akcí neuvádím. Screenshoty budou jen z demo akce.
- Pokrytí testy je vzhledem k velikosti systému slabé; to je další věc na opravu.