尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A hotel booking web app: search stays (with filters and AI search), book with a mock checkout, manage bookings, earn points, and list properties.
Built with Next.js 16 (App Router), React 19, Tailwind CSS 4, Supabase (Postgres + Google sign-in) and Gemini (AI search).
You need Node.js 20.9 or newer and git.
git clone https://github.com/ItaiHammer/likehome.git
cd likehome
git checkout dev # team work lives on dev; main is not up to date
npm install
Create .env.local in the project folder (ask the team for the values, never commit this file):
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=...
GOOGLE_GENERATIVE_AI_API_KEY=...
LITEAPI_KEY=...
SUPABASE_SECRET_KEY=...
LITEAPI_KEY turns on live prices, search anywhere and destination suggestions. SUPABASE_SECRET_KEY is server-only: it saves a LiteAPI hotel when someone opens it from search, saves bookings at their live LiteAPI price (without it, every stay shows and books at its stored price), and npm run import:liteapi needs it to write.
Then start the dev server and open http://localhost:3000:
npm run dev
In development, /MyBookings?sample shows sample bookings, so My Bookings can be tested without seeded data.
| Command | What it does |
|---|---|
npm run dev | Dev server with hot reload |
npm test | Unit tests (tests/*.test.mjs, Node's built-in test runner) |
npm run lint | ESLint |
npm run build | Production build |
npm run import:liteapi | Imports hotels for popular destinations from LiteAPI (try -- --dry-run first) |
| Path | What's there |
|---|---|
app/ | Pages and API routes (app/api/*): search, reserve, checkout, MyBookings, listings, auth |
app/_components/ | Shared UI (search bar, calendar, buttons in ui/) |
components/ | Auth buttons used in the header |
utils/ | Supabase data access and server helpers (reservations, payments, points, search) |
lib/ | Pure logic shared by pages (bookings, listings, LiteAPI mapping, validation) |
supabase/migrations/ | SQL for search, LiteAPI hotels, overlap checks, points, saved checkout, insurance |
tests/ | Unit tests |
dev (<name>/<topic>), open a PR into dev, and get one review before merging.YYYY-MM-DD strings. "Today" is the guest's today: use todayInTimeZone(tz) from utils/reservation-logic.ts (the browser sends tz / time_zone; server pages read the tz cookie via utils/guest-today.ts). Avoid todayUTC() for anything a guest sees.