Files
wtr/docs/deployment.md
zv 1ae1be68ec
All checks were successful
CI / Lint, typecheck and build (push) Successful in 9m54s
feat: persist push subscriptions in sqlite
2026-06-13 22:03:37 +02:00

2.5 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ść

Przed zakończeniem zmian uruchamiaj:

npm run lint
npm run typecheck
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.