WallpaperMachine
The wallpapers you love. A new home on your Mac.
Ask for a Kyoto weekend and get a stay, experiences and a dinner spot.
LifestyleTypeScript · CSSGitHub @mufaddalaziz99-webOnlineOwner 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 ↗Run it: npm install && npm run dev, then open http://localhost:3000.
undefined.Measured in the app (two runs, timer counted from pressing Enter):
| Moment | Time |
|---|---|
| Input locks ("Planning your weekend…") and pulsing dots appear in the reply bubble | ~0.05 s |
| Dots disappear, Stay, Experience and Food cards appear, input unlocks | ~2.05 s |
The dots run for 2 seconds: requestPlan waits for the mock API and a 2 s minimum (MIN_THINKING_MS in src/components/chat/Chat.tsx). The "s after send" badge in the bottom corner is a timer added only for the recording; it isn't part of the app.
| 1. Just sent: input locked, dots pulsing | 2. Still thinking (1.2 s) | 3. Cards in, input unlocked |
|---|---|---|
| Piece | File |
|---|---|
| Mock rows, one from each content-pack sheet (Stays, Experiences, Food) | src/data/kyoto-weekend.ts |
Fake API, POST /api/plan, returns the three items | src/app/api/plan/route.ts |
| Card components | src/components/cards/StayCard.tsx, ExperienceCard.tsx, FoodCard.tsx |
| Filler line for empty fields | src/components/cards/Filler.tsx |
| Chat, input lock and thinking timing | src/components/chat/Chat.tsx, Composer.tsx |
The mock rows are Stays S1, Experiences E1 and Food F1 from the Kyoto Weekend Prototype Content Pack: $366 + $116 + $34 = $516 for 2 guests, inside the pack's $600 reference budget. Prices are USD as in the pack. The pack has no photo URLs (image rights not cleared), so each card's image spot shows "No photo yet".
The brief asks the Stay card to show Price per Night (USD). This card deliberately shows the two-night total instead: "$366 for 2 nights", from Total for 2 Nights (USD) (Stays sheet, cell G3). Why:
Open question: what the $30 gap is (fees, taxes, something else) still needs confirming with
the workbook's owner. If it's fees, the card can say "incl. fees". If the brief's Price per Night has
to stand, the card switches to "$168 a night" (pricePerNight is still in the mock row).