尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Find the right song, and the exact section of it, for your Reel or TikTok.
Upload a video. Songfit understands what's in it and how you want it to feel,
then recommends 3 real songs with the precise start and end timestamps to use.檢視完整 README ↗Find the right song, and the exact section of it, for your Reel or TikTok.
Upload a video. Songfit understands what's in it and how you want it to feel, then recommends 3 real songs with the precise start and end timestamps to use.
Design docs:
docs/ARCHITECTURE.md — modules, pipeline, rules that keep stages replaceabledocs/DATA_MODEL.md — every table, status and event namedocs/RESEARCH.md — findings on music APIs, trend data and recommendation literaturedocs/RUNBOOK.md — launch-day operations: monitoring, troubleshooting, manual fixesCLAUDE.md — working rules for AI coding agents on this repoNext.js (App Router), TypeScript strict, Tailwind, Supabase (Postgres, Auth, Storage), Anthropic SDK, OpenAI Whisper, Deezer public API, Stripe Payment Link, Vitest, pnpm, Vercel.
Prerequisites: Node 20+, pnpm, ffmpeg (brew install ffmpeg), Supabase CLI
(brew install supabase/tap/supabase).
pnpm install
cp .env.example .env.local # fill in every key
supabase start # local Postgres + Auth + Storage
pnpm db:reset # apply migrations
pnpm db:types # generate src/db/types.ts
pnpm dev # http://localhost:3000
See .env.example. Summary:
| key | purpose |
|---|---|
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY | browser client |
SUPABASE_SERVICE_ROLE_KEY | server-side pipeline and admin |
ANTHROPIC_API_KEY | video analysis, candidate generation, scoring |
OPENAI_API_KEY | Whisper transcription |
STRIPE_PAYMENT_LINK_URL, STRIPE_WEBHOOK_SECRET | subscription |
ADMIN_EMAILS | comma-separated, gates /admin |
RESEND_API_KEY | optional; welcome email on first Google sign-in (Resend, from [email protected], domain verified in Resend). Unset: no email, logs email.skipped |
APPLE_TEAM_ID, APPLE_MUSICKIT_KEY_ID, APPLE_MUSICKIT_PRIVATE_KEY (or _B64) | Apple Music API developer token (catalogue search + 30 s previews); the key is the MusicKit .p8 text in double quotes (multi-line) or base64 on one line |
/api/stripe/webhookpnpm dev # run locally
pnpm typecheck # tsc --noEmit
pnpm lint
pnpm test # vitest unit tests
pnpm db:reset # re-apply all migrations locally
pnpm db:types # regenerate database types
app/ routes and pages, thin
src/ media, analysis, engine, feedback, billing, db, shared
supabase/ migrations
docs/ architecture and data model
Pre-launch build for an Entrepreneur First challenge. The engine is model-backed with Deezer verification; catalog, vector retrieval and trend signals are designed in but not yet populated.
Production: https://songfit.vercel.app (Vercel project songfit, GitHub dylanbryan2002-wq/songfit, branch mvp).
.vercel/, gitignored). Do not run vercel link or vercel env pull again: both overwrite your local env file with only a VERCEL_OIDC_TOKEN. Agents are blocked from these by .claude/hooks/guard-secrets.py. A human re-linking on a new machine must back the env file up first.vercel env add <KEY> production for every key in .env.example except SUPABASE_DB_PASSWORD and STRIPE_* (not needed at runtime yet). NEXT_PUBLIC_SITE_URL is the production URL.npx vercel --prod --yes.curl "https://<url>/api/health?sleep=65" returns {"ok":true,"slept":65}; once, ?sleep=290 with --max-time 320.https://<url>/** to Redirect URLs. Google OAuth: add https://<url> to Authorized JavaScript origins.waitUntil is not durable. The submission pipeline runs inside the POST /api/submissions request; if the instance dies mid-run the status stays in-flight. After LIMITS.inFlightStaleMinutes the claim becomes available again and the admin Retry re-runs it.