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