尚未检测到更新。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.