Fujimod
Try your camera firmware in the browser and build Fujimod SD boot files.
Handpicked stays with the comfort of home.
LifestyleTypeScript · JavaScriptGitHub @ItaiHammerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.