尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Polski serwis rezerwacyjny (helptravel.pl): wyszukiwarka i rezerwacja hoteli oraz lotów, wsparta warstwą treści (kierunki, przewodniki, inspiracje) pod SEO. Rezerwacja odbywa się u nas — nie przez przekierowanie do partnera. Rozliczeniowo merchant of record jest NUITEE TRAVEL (LiteAPI), płatność kartą lub Google Pay.檢視完整 README ↗
Polski serwis rezerwacyjny (helptravel.pl): wyszukiwarka i rezerwacja hoteli oraz lotów, wsparta warstwą treści (kierunki, przewodniki, inspiracje) pod SEO.
Rezerwacja odbywa się u nas — nie przez przekierowanie do partnera. Rozliczeniowo merchant of record jest NUITEE TRAVEL (LiteAPI), płatność kartą lub Google Pay.
/data, /hotels/rates, prebook/book) i loty (LiteAPI Flights)Travelpayouts / Hotellook / Aviasales / Stay22 / CJ zostały całkowicie usunięte. Linki kierunkowe prowadzą wyłącznie do naszych własnych ścieżek (
/hotele/szukaj, wyszukiwarka lotów).
Menedżer pakietów: pnpm (w repo jest pnpm-lock.yaml).
pnpm install
cp .env.example .env.local # uzupełnij wartości
pnpm db:push
pnpm dev # http://localhost:3000
pnpm lint
pnpm test
pnpm build
Pojedynczy plik testowy:
node --import tsx --test src/lib/concierge/tools.test.ts
Testy uruchamiane są z jawnej listy plików w package.json — nowy plik *.test.ts trzeba tam dopisać, inaczej nigdy się nie wykona.
Smoke'i uderzające w prawdziwe API (czytają .env.local):
pnpm smoke:liteapi
pnpm booking:smoke
Źródłem prawdy jest .env.example — zawiera komplet zmiennych z komentarzami (m.in. które klucze LiteAPI idą w X-API-Key, a które są publiczne dla widgetu płatności). Skopiuj go do .env.local; na Vercelu dodaj każdą zmienną osobno.
Minimum do startu lokalnego: DATABASE_URL, NEXT_PUBLIC_SITE_URL, klucze LiteAPI (sand_ wystarczy do wyszukiwania). Bez UPSTASH_* aplikacja działa, tylko bez cache'u i rate limitingu.
Testy płatności obciążają prawdziwą kartę — używaj klucza sand_.
Rezerwacje: /hotele (wyszukiwarka, karta hotelu, checkout), /loty (wyniki, rezerwacja), /wyjazdy/[typ], /oferta, /cennik.
Treści i SEO: /kierunki, /najlepsze-kierunki, /inspiracje, /przewodniki, /porownanie, /city-breaki, /cieple-kierunki, /bez-wizy, /tanie-podroze, /weekendowe-wyjazdy.
Zaufanie i formalności: /o-nas, /faq, /jak-pracujemy, /redakcja, /standard-redakcyjny, /regulamin, /polityka-prywatnosci, /dla-partnerow, /mapa-serwisu.
AI concierge (czat doboru wyjazdu) jest montowany w layoucie na każdej stronie; wyłącznik: NEXT_PUBLIC_SHOW_CONCIERGE=false.
Vercel, gałąź main idzie prosto na produkcję. Zmienne środowiskowe ustawiane w Project Settings.
Crony (vercel.json) grzeją cache i budują snapshot cen:
/api/cron/warm-rates — co 30 min/api/cron/warm-flights — :15 i :45Po wdrożeniu: docs/post-deploy-checklist.md.
CLAUDE.md — architektura, konwencje i pułapki (czytaj przed większą zmianą)docs/booking-flow.md — ścieżka rezerwacji, docs/analytics-events.md — eventy GA4PRODUCT.md — zasady produktowe