尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A playful, map-first web app for Ulaanbaatar: "capture" the stray cats and dogs you spot. Each capture goes into My Collection, and when an animal needs something (food, water, a vet, or its owner), it raises an SOS pin on a shared map so people nearby can help and mark it helped.
Built with Next.js 16, Tailwind CSS, Supabase (accounts, database, photos), Leaflet + OpenStreetMap, and OpenAI (breed guess).
npm install.supabase/schema.sql and run it. Safe to re-run..env.example to .env.local and fill in:
NEXT_PUBLIC_SUPABASE_URL — Project Settings → APINEXT_PUBLIC_SUPABASE_ANON_KEY — the publishable key (sb_publishable_…), never the secret oneOPENAI_API_KEY — for the photo check, breed guess, and matching (server-only)SUPABASE_SECRET_KEY — the secret key (sb_secret_…), server-only; used to find matching captures and to send notificationsNEXT_PUBLIC_VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY — for phone notifications; generate a pair with node -e "console.log(require('web-push').generateVAPIDKeys())"DEMO_PASSWORD — only needed for scripts/seed-demo.mjs, which creates the two sample logins and sample postsnpm run dev and open http://localhost:3000. On desktop, the camera falls back to a file picker.Phones only allow the camera and location on https://. Deploy to Vercel (import this GitHub repo, add the same environment variables, except DEMO_PASSWORD), then open the https://…vercel.app link on your phone.
Small scripts in scripts/ verify the database rules against your Supabase project using throwaway test accounts:
node --env-file=.env.local scripts/check-accounts.mjs
node --env-file=.env.local scripts/check-captures.mjs
node --env-file=.env.local scripts/check-helped.mjs
node --env-file=.env.local scripts/check-delete.mjs
node scripts/check-vets.mjs
# with `npm run dev` running; the folder needs cat.jpg, dog.jpg, banana.jpg
node --env-file=.env.local scripts/check-breed.mjs path/to/test-photos
To remove the test accounts and their captures afterwards, run this in the SQL Editor:
delete from auth.users where email like 'collectsavar.check+%';
Map tiles and street addresses come from © OpenStreetMap contributors, via the tile server and Nominatim, following their usage policies.