2026-06-13 13:36:36 +02:00
2026-06-13 13:36:36 +02:00
2026-06-13 13:36:36 +02:00
2026-06-13 13:36:36 +02:00
2026-06-13 13:36:36 +02:00
2026-06-12 18:46:25 +02:00

wtr.

wtr. to mobilna PWA pogodowa dla Polski oparta o publiczne dane IMGW oraz jawnie oznaczoną prognozę modelową łączącą IMGW ALARO z Open-Meteo.

Aplikacja pokazuje bieżącą analizę IMGW Hybrid, pomiary synoptyczne, prognozę godzinową i 7-dniową, ostrzeżenia meteorologiczne i hydrologiczne, dane hydro oraz deterministyczne briefy pogodowe bez użycia zewnętrznego modelu AI.

Najważniejsze funkcje

  • Bieżące warunki z lokalnej analizy IMGW Hybrid, z opisanym fallbackiem do stacji synoptycznej.
  • Prognoza modelowa 7 dni: IMGW ALARO dla dostępnych godzin oraz Open-Meteo jako uzupełnienie i fallback.
  • Wyszukiwanie miejscowości w Polsce oraz opcjonalny wybór lokalizacji GPS.
  • Ostrzeżenia IMGW z filtrowaniem meteo po powiecie TERYT, gdy lokalizacja go dostarcza.
  • Powiadomienia Web Push o nowych ostrzeżeniach, porannym briefie dnia i wieczornym briefie na jutro.
  • Widoki dashboardu, prognozy szczegółowej dnia, ostrzeżeń, hydro, stacji i ustawień.
  • PWA z manifestem, własnym service workerem i podstawowym fallbackiem offline.
  • Interfejs po polsku i angielsku.

Stack

  • Next.js App Router, React, TypeScript
  • Tailwind CSS
  • TanStack Query
  • Zustand
  • Framer Motion
  • Recharts
  • Lucide React
  • web-push
  • własny service worker i manifest PWA

Szybki Start

Wymagany jest Node.js 20.9 lub nowszy.

npm install
npm run dev

Aplikacja będzie dostępna pod adresem http://localhost:3000.

Konfiguracja

Do podstawowego uruchomienia aplikacji pogodowej nie są potrzebne klucze API. Publiczne dane IMGW, Open-Meteo i Nominatim są pobierane przez route handlery Next.js.

Powiadomienia Web Push wymagają zmiennych środowiskowych:

WEB_PUSH_VAPID_PUBLIC_KEY=
WEB_PUSH_VAPID_PRIVATE_KEY=
WEB_PUSH_VAPID_SUBJECT=mailto:admin@example.com
NOTIFICATIONS_CRON_SECRET=
WTR_APP_URL=http://127.0.0.1:3000
NOTIFICATIONS_WARNING_INTERVAL_MINUTES=5
NOTIFICATIONS_MORNING_BRIEF_TIME=07:00
NOTIFICATIONS_TOMORROW_BRIEF_TIME=18:00

Przykład znajduje się w .env.example.

Komendy

Komenda Opis
npm run dev Uruchamia serwer deweloperski Next.js.
npm run lint Uruchamia ESLint.
npm run build Buduje aplikację produkcyjnie i uruchamia kontrolę TypeScript wykonywaną przez Next.js.
npm run start Uruchamia zbudowaną aplikację.
npm run notifications:worker Uruchamia self-hostowany worker powiadomień. Wymaga działającej aplikacji Next.js.

Repozytorium nie ma obecnie osobnego skryptu testów, type-check ani formattera.

Struktura Projektu

app/          routing, layout, route handlery i strony
components/   komponenty widoków, UI, stanów, prognozy, hydro i ostrzeżeń
hooks/        hooki TanStack Query
lib/          fetchery, normalizacja danych, Web Push, i18n, store i helpery
types/        typy danych IMGW, prognozy, lokalizacji i powiadomień
public/       manifest, service worker i ikony PWA
scripts/      worker powiadomień dla self-hostingu
docs/         szczegółowa dokumentacja techniczna

Dokumentacja

Status i Ograniczenia

  • lib/push-store.ts przechowuje subskrypcje Web Push w pamięci procesu. Produkcyjne wdrożenie wymaga trwałego magazynu, np. bazy danych albo KV.
  • Endpoint IMGW Hybrid używany przez dashboard pochodzi z publicznego frontendu meteo.imgw.pl, a nie ze stabilnie opisanej dokumentacji danepubliczne.imgw.pl.
  • Publiczne API IMGW potrafi zwrócić 404 z komunikatem No products were found dla pustych list ostrzeżeń; aplikacja traktuje to jako brak ostrzeżeń.
  • Prognoza jest prognozą modelową, nie pomiarem IMGW. Bieżące pomiary i prognozy są w UI rozdzielane.
Description
Aplikacja pogodowa PWA dla Polski: IMGW Hybrid, ALARO, Open-Meteo, ostrzeżenia, hydro, GPS i Web Push.
https://wtr.zvcloud.net
Readme 2 MiB
Languages
TypeScript 96.7%
JavaScript 2.3%
CSS 1%