
Weather InTouch
Full-stack platforma pro předpověď počasí postavená na proaktivních výstrahách a automatizacích, ne na pouhém pasivním zobrazování dat. Weather InTouch kombinuje páteř z otevřených dat zdarma s cachovací vrstvou řízenou náklady, která deduplikuje placená volání weather API napříč všemi uživateli. Běží v produkci jako B2C webová aplikace — živé karty počasí, oficiální výstrahy ze sedmi národních zdrojů, watchdog automatizace, AI asistent počasí a Stripe billing — kterou doplňuje vícejazyčný marketingový web a blog ve 20 jazycích. Vkládatelný white-label widget je hotový a postupně se zavádí; nativní shell pro iOS/Android (Capacitor) čeká na vydání do obchodů.
Technologie
Architektura a kontext dodávky
Problém
Většina produktů s počasím končí u hezkých ikonek. Lidé neplatí za to, aby se na počasí dívali — platí za to, aby byli včas varováni nebo aby se za ně něco automaticky vyřešilo. Placená weather API se navíc účtují za každé volání, takže každá služba, která škáluje na mnoho uživatelů a lokalit, riskuje neúnosné náklady, pokud requesty agresivně nededuplikuje.
Přístup
Weather InTouch je TypeScriptové monorepo postavené na dvou myšlenkách: proaktivní hodnota (oficiální výstrahy, watchdog pravidla, automatizace a webhooky) a důsledná kontrola nákladů. Datovou páteř tvoří Open-Meteo zdarma, která pokrývá většinu předpovědi; volitelný placený OpenWeather overlay doplňuje prémiové aktuální podmínky — zapíná se přítomností placeného API klíče a volá se best-effort, takže produkt elegantně degraduje na bezplatnou páteř, když placený zdroj není dostupný.
Architektura produktu
Produkt zahrnuje tři aplikace v jednom npm-workspaces monorepu, které sdílejí jediný zdroj pravdy pro datové tvary:
1. Webová aplikace (app.weatherintouch.com)
Angular 22 SPA se zoneless, OnPush a standalone komponentami. Bezstavové karty počasí (aktuální podmínky, vícedenní předpověď, hodinový multivariační graf, meteoradar) přijímají data jako vstupy; jediná API služba proxuje na backend. Zážitek doplňují data o kvalitě ovzduší a pylech, oficiální výstrahy a uložené oblíbené lokality.
2. Backend API (api.weatherintouch.com)
NestJS 11 + Mongoose služba, která vlastní veškerý přístup k placeným API, autentizaci i billing. Apple Sign-in a Google OAuth využívají token-on-backend vzor; přístupové a refresh JWT tokeny se vydávají na serveru. Tarify Free / Plus / Pro pohání Stripe.
3. Marketingový web a blog (weatherintouch.com)
Vlastní TypeScriptový generátor statického webu, který z Markdownu a frontmatteru vytváří HTML přeložené do 20 jazyků pipeline nad Google Gemini.
Engine pro kontrolu nákladů
Klíčovou inovací je dvouvrstvý single-flight cache. Requesty se klíčují podle souřadnic zaokrouhlených na čtyři desetinná místa (mřížka ~11 m), takže blízcí uživatelé sdílejí jeden záznam v cache. In-process promise mapa sloučí souběžné requesty uvnitř jednoho Node procesu a Redis zámek SET NX (s Lua check-and-delete) je koordinuje napříč replikami. Ten, kdo zámek nezíská, místo volání placeného API počká na čerstvě nacachovaný výsledek. Spolu se stale-while-revalidate se tak placené weather API zavolá zhruba jednou za lokalitu za TTL (výchozí 30 minut), což drží marže blízko nule i při škálování tenant-agnostického widgetu.
Obchodní model
- B2C předplatné (Free / Plus / Pro) přes Stripe
- B2B licencování white-label widgetu — vkládatelná bezstavová karta aktuálního počasí pro cizí weby, obsluhovaná ze stejné sdílené cache
- API pro automatizace a webhooky (developer tarif) — když počasí splní pravidlo, spustí se webhook, např. pro IoT a Home Assistant
Stav
Běží v produkci. Webová aplikace, backend API i vícejazyčný marketingový web jsou nasazené (app / api / weatherintouch.com). Dnes běží: autentizace (Apple/Google) se serverovou rotací JWT, Stripe billing Free/Plus/Pro, dvouvrstvá cache pro kontrolu nákladů, kompletní sada karet počasí (aktuální podmínky, šestidenní i 168hodinová předpověď, hodinový multivariační graf, meteoradar, mapa POI, kvalita ovzduší a pyly), oficiální výstrahy ze sedmi národních zdrojů (NWS, ČHMÚ, DWD, MET Norway, MSC Kanada, IMD Indie, Irsko), watchdog pravidla s doručováním více kanály (e-mail, Telegram, webhook, push), AI asistent, plánovač výletů a kompilátor pravidel z přirozeného jazyka (Gemini), integrace chytré domácnosti Loxone s API klíči pro jednotlivé klienty a uložené oblíbené lokality. Vkládatelná white-label web komponenta (Angular Elements + iframe, klíčovaná per-tenant) je hotová a čeká na nasazení přes CDN; Capacitor shell pro iOS/Android (geolokace, push, přihlášení přes sociální sítě) je připravený a čeká na publikaci do obchodů. Na roadmapě zůstává: kvóty widgetu per-tenant, další cíle chytré domácnosti (Home Assistant, KNX) a administrátorská konzole pro zdraví integrací.