尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A mobile-friendly trip planner for real landmarks in Miami, Milan/Monza, and Villanova/Main Line/Philadelphia — with GPS check-ins, a shared points leaderboard, and an AI trip-planning assistant. Also wrapped in Capacitor as a real iOS app (see ios/).
Trip planning (starting location, region, interests, landmark selection, itinerary) and browsing the explore map work immediately with no setup — trip state is stored in your browser's localStorage.檢視完整 README ↗A mobile-friendly trip planner for real landmarks in Miami, Milan/Monza, and Villanova/Main Line/Philadelphia — with GPS check-ins, a shared points leaderboard, and an AI trip-planning assistant. Also wrapped in Capacitor as a real iOS app (see ios/).
npm install
npm run dev
Trip planning (starting location, region, interests, landmark selection, itinerary) and browsing the explore map work immediately with no setup — trip state is stored in your browser's localStorage.
Accounts, check-ins, the leaderboard, friends, reviews, and landmark submissions are all shared across users, so they need a real backend. The app uses Firebase's free Spark tier (Auth + Firestore + Storage). Until you configure it, those features show a "not configured" message — trip planning and the explore map still work.
Create a free project at console.firebase.google.com.
In Build → Authentication → Sign-in method, enable Email/Password. (Google sign-in isn't used — email/password only.)
In Build → Firestore Database, click Create database (start in production mode).
In Build → Storage, click Get started (needed for check-in/review/landmark photos).
In Project settings → General, scroll to "Your apps," add a Web app, and copy the config values.
Copy .env.example to .env and fill in the values:
cp .env.example .env
Restart npm run dev.
Deploy firestore.rules and storage.rules from this repo as-is (Firestore Database → Rules, and Storage → Rules) — they're the real, current rules the app depends on, not a snippet to hand-copy. Cover check-ins (immutable once claimed), the leaderboard, user profiles/usernames, friends and blocks, reviews (with report-based hiding), landmark submissions (with the same reporting, plus admin approval), and Storage photo uploads.
The in-app AI assistant (the "✨ Ask AI" widget, the Mapr trip-planning chat, custom-interest matching on Setup, and landmark-submission verification) is powered by the Anthropic API via serverless functions in api/. Add ANTHROPIC_API_KEY to .env (see .env.example) to enable it locally, and as a Vercel environment variable in production. Without it, those features show a "not set up yet" message — everything else works fine.
Server routes read these from Vercel: GOOGLE_PLACES_API_KEY (Places API (New) only), GOOGLE_ROUTES_API_KEY (Routes API only), ANTHROPIC_API_KEY, FIREBASE_SERVICE_ACCOUNT and CRON_SECRET. The Google keys are separate on purpose, each restricted to its own API. Daily caps, the monthly budget and the current setup are written down in docs/photos.md (Owner setup).
Each check-in increments per-period aggregate documents (leaderboard_entries) keyed by ISO week / calendar month / calendar year. When a new period starts, its key is new, so the leaderboard naturally shows zero for that period — no scheduled job required.
npm run ios:sync # builds the web app and copies it into ios/App
npm run ios:open # opens the Xcode project
From Xcode, pick a simulator or device and run. No CocoaPods needed — this uses Capacitor's Swift Package Manager integration.
@capacitor/core, @capacitor/ios) plus @capacitor/geolocation and @capacitor/camera for native location/camera access, with web fallbacks for the browser buildapi/) for the AI assistant, trip planning, and interest/landmark verification — rate-limited per endpointlocalStorage