Files
wtr/docs/deployment.md
zv 074117869e
All checks were successful
CI / Lint, typecheck and build (push) Successful in 9m55s
docs: update agent verification rules
2026-06-14 10:18:31 +02:00

3.1 KiB

Wdrożenie i Uruchamianie

Lokalnie

Wymagany jest Node.js 20.9 lub nowszy.

npm install
npm run dev

Domyślny adres lokalny:

http://localhost:3000

Build Produkcyjny

npm run build
npm run start

npm run build uruchamia build Next.js oraz kontrolę TypeScript wykonywaną przez Next.js.

Self-Hosting z Workerem Powiadomień

Worker powiadomień musi działać obok uruchomionej aplikacji:

npm run start
npm run notifications:worker

Jeśli aplikacja działa na innym porcie, ustaw WTR_APP_URL:

WTR_APP_URL=http://127.0.0.1:4000 npm run notifications:worker

Worker sam wczytuje .env i .env.local, ale zmienne ustawione w shellu mają pierwszeństwo.

Vercel

  1. Umieść repozytorium w serwisie Git.
  2. Importuj projekt do Vercel jako aplikację Next.js.
  3. Nie dodawaj kluczy API dla danych pogodowych: publiczne endpointy IMGW, Open-Meteo i Nominatim nie wymagają ich w obecnej integracji.
  4. Wdróż standardowym buildem npm run build.

Proxy IMGW działa jako route handler Next.js i jest zgodne z hostingiem Vercel.

Jeśli używasz powiadomień na Vercel, endpointy harmonogramu muszą być wywoływane zewnętrznym cronem albo innym schedulerem. Sam route handler nie uruchamia się cyklicznie bez zewnętrznego wywołania.

Zmienne Środowiskowe

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
WTR_DATABASE_PATH=./data/wtr.sqlite
NOTIFICATIONS_WARNING_INTERVAL_MINUTES=5
NOTIFICATIONS_MORNING_BRIEF_TIME=07:00
NOTIFICATIONS_TOMORROW_BRIEF_TIME=18:00

Do zwykłego uruchomienia aplikacji pogodowej zmienne Web Push nie są wymagane. Są potrzebne dopiero dla powiadomień.

WTR_DATABASE_PATH wskazuje plik SQLite z subskrypcjami Web Push i historią wysyłek. Na self-hostingu ustaw go na ścieżkę w trwałym katalogu, np. /home/admin/wtr-data/wtr.sqlite, jeśli katalog projektu jest podmieniany podczas deploya.

Jakość

Repozytorium używa Gitea Actions jako końcowej bramki jakości po pushu. Lokalna weryfikacja powinna być proporcjonalna do ryzyka zmiany:

  • dokumentacja, teksty i komentarze: przegląd diffu oraz opcjonalnie git diff --check,
  • drobne zmiany wizualne: bez rutynowego builda; npm run lint tylko przy ryzyku błędu składni lub reguł lintingu,
  • zmiany w logice, hookach, typach, parserach i danych pogodowych: npm run typecheck, a dla TS/TSX także npm run lint,
  • routing Next.js, config, zależności, package-lock, PWA/service worker, API/server code, build config i obsługa env: npm run lint, npm run typecheck oraz npm run build.

Repozytorium nie ma obecnie skryptu testów ani formattera.

Bezpieczeństwo Zależności

Projekt używa Next.js 16.2.6. Znany status zależności obejmuje umiarkowane zgłoszenie GHSA-qx2v-qp2m-jg93 dla PostCSS 8.4.31 bundlowanego bezpośrednio przez Next.js. Główna konfiguracja projektu korzysta z PostCSS 8.4.49. Po publikacji poprawki upstream należy zaktualizować Next.js i ponownie uruchomić audyt.