尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A self-contained trip planner + knowledge base for a long Asia nomad trip. Tracks an
itinerary (timeline, stays, flights), an auto-calculating budget in HUF, a monthly
spending / earn-target view, a 3D globe route map, an income/profit ledger,
and a 37-city knowledge base with costs, transport, landmarks, visas, month-by-month
weather, and coordinates.
Deployment: this app is served-only (Vercel). cities.json is fetched live at
load — there's no embedded snapshot to maintain. (Editing happens via the deployed
project / repo, not by double-clicking the file.)查看完整 README ↗A self-contained trip planner + knowledge base for a long Asia nomad trip. Tracks an itinerary (timeline, stays, flights), an auto-calculating budget in HUF, a monthly spending / earn-target view, a 3D globe route map, an income/profit ledger, and a 37-city knowledge base with costs, transport, landmarks, visas, month-by-month weather, and coordinates.
Deployment: this app is served-only (Vercel).
cities.jsonis fetched live at load — there's no embedded snapshot to maintain. (Editing happens via the deployed project / repo, not by double-clicking the file.)
| File | What it is |
|---|---|
index.html | App shell (markup + CSS). Loads js/*.js in order; fetches cities.json at load. No build step. |
js/ | The app logic, split for maintainability — loaded as ordered plain scripts (shared global scope, so inline handlers keep working): data → core → views → forms → cloud → map → money → io → init (boot is last). |
cities.json | The single source of truth for reference data — all 37 cities + 16 countries: costs, food, transport, landmarks, visas, 12-month climate, lat/lng. Edit this and redeploy. |
vendor/ | Vendored assets (3D globe library + earth texture, Supabase client). Committed on purpose so the app doesn't depend on a CDN — see vendor/README.md. |
tools/ | add-coords.mjs — manages city coordinates in cities.json. |
supabase/ | schema.sql + migrations/ + config.js (public keys) for cloud sync. |
DATABASE.md | Supabase setup steps. |
README.md | This file. |
Overview · Timeline · Map (3D globe of your route) · Stays · Transport · Budget · Monthly (earn-target) · Money (income/expense P&L) · Knowledge Base · Data · Settings.
A 3D globe (no API key, no Google Maps) of your whole trip:
Globe library, textures and borders are vendored in vendor/ and loaded on demand.
Note: Hong Kong & Singapore are too small for the 110m borders dataset, so they aren't
separately clickable as countries.
Each tab has a URL hash — …/#map, …/#budget, …/#money — so you can bookmark or share
a specific view, and the browser back/forward buttons work.
Log what you actually earn and spend to see a month-by-month profit/loss next
to your planned spend. Stored separately from the trip — its own browser storage and its
own income.json (Export/Import), plus CSV export. The row shape matches the Supabase
ledger table, so it migrates cleanly later.
cities.json is the single source of truth and is fetched live at page load — edit
it and redeploy (push to GitHub → Vercel rebuilds). No snapshot to regenerate.
npm run coords # (re)apply city coordinates to cities.json (e.g. after adding a city)
When you add a new city, also add its coordinates to tools/add-coords.mjs and run the
command above.
The deployed page does fetch('cities.json') on startup and renders from it, so the live
site always reflects the latest cities.json.
Your itinerary/trip data (stops, stays, flights, budget toggles) and the income ledger live in
localStorage, and — when signed in — sync to Supabase (seeDATABASE.md). The in-app Export / Import buttons make manual backups.
# from this folder:
npx serve .
# – or –
python3 -m http.server 8080
Then open the printed http://localhost:... URL.
It's a plain static site — no framework, no build.
npm i -g vercel then run vercel in this folder and accept the defaults
(Framework Preset: Other, Build Command: none, Output Directory: ./).index.html is served at / and cities.json next to it, so the fetch just works.
Edit cities.json. Each city looks like:
{
"region": "SE",
"country": "Thailand",
"city": "Bangkok",
"costs": {
"allInDayMid": [70, 110],
"accomPerNight": { "budget": 25, "mid": 55, "nice": 150 },
"rentMonthly": 600,
"dailyLiving": { "low": 25, "mid": 40, "high": 65 }
},
"food": "…",
"transport": "…",
"internet": "…",
"landmarks": [ { "name": "…", "why": "…", "when": "…", "how": "…", "cost": "…", "time": "…" } ],
"weather": {
"hazard": "best months / typhoon / monsoon notes",
"months": [ { "m": "Jan", "hi": 32, "lo": 21, "rain": 15 }, … 12 entries Jan→Dec ]
}
}
All money is approximate USD (mid-2026 estimates); the app converts to HUF using the editable rates in Settings. Weather is climate normals: average daily high/low °C and monthly rainfall in mm.
Note: edit
cities.jsonand redeploy — the live site fetches it on load, so changes show up immediately after the Vercel rebuild. New cities also need coordinates: add them totools/add-coords.mjsand runnpm run coords.
docs/ARCHITECTURE.md: Next.js + Supabase + Vercel,
shared vs per-user RLS, phased migration. Backend (schema/RLS/auth/invites) already built.supabase/schema.sql + DATABASE.md; keep localStorage as the offline cache.cities.json per region if it grows.