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
- Umieść repozytorium w serwisie Git.
- Importuj projekt do Vercel jako aplikację Next.js.
- Nie dodawaj kluczy API dla danych pogodowych: publiczne endpointy IMGW, Open-Meteo i Nominatim nie wymagają ich w obecnej integracji.
- 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 linttylko 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żenpm 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 typecheckoraznpm 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.