# Wdrożenie i Uruchamianie ## Lokalnie Wymagany jest Node.js 20.9 lub nowszy. ```bash npm install npm run dev ``` Domyślny adres lokalny: ```text http://localhost:3000 ``` ## Build Produkcyjny ```bash 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: ```bash npm run start npm run notifications:worker ``` Jeśli aplikacja działa na innym porcie, ustaw `WTR_APP_URL`: ```bash 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 ```bash 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.