尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
VIC Schedule Studio is a streamer-first schedule studio built for Victory. It provides a public monthly calendar for viewers, an owner-only editing studio for the streamer, a passcode-gated teaser (최초공개) reveal, support (업 도움) highlighting, customizable broadcast tags, viewer hearts with interest tiers, an OBS broadcast preview (/onair) and a broadcast drawing board. (Sticker decoration, PNG export and the worker role were retired on 2026-08-27 — ADR-0014/0015.) The product is designed around one core rule:檢視完整 README ↗
VIC Schedule Studio is a streamer-first schedule studio built for Victory.
It provides a public monthly calendar for viewers, an owner-only editing studio for the streamer, a passcode-gated teaser (최초공개) reveal, support (업 도움) highlighting, customizable broadcast tags, viewer hearts with interest tiers, an OBS broadcast preview (/onair) and a broadcast drawing board. (Sticker decoration, PNG export and the worker role were retired on 2026-08-27 — ADR-0014/0015.)
The product is designed around one core rule:
Public viewers must only receive public schedule data. Embargo, work, and owner-private information must never be included in public responses.
/: public poster (anonymous allowed); logged-in owner/developer get a studio link/onair: anonymous broadcast preview (avatar scene fixed) for OBS/studio: owner-first studio with month navigation and date-based event editing/studio/tags: owner settings (tags). (/studio/trusted-members was retired 2026-09-04, ADR-0018.)/api/public/[slug]/events: public schedule DTO (private fields excluded)See docs/deployment.md for the full production runbook (Vercel + Supabase, owner handoff to Victory, OAuth/redirect setup, read-heavy caching).
Persistence is Supabase (Postgres + RLS); sample data is only used by the visual fixtures.
The app resolves the current role on the server.
OWNER_EMAIL means owner. OWNER_EMAIL is a comma-separated list, so one streamer can use multiple Google accounts as the same owner.viewer. (The manager / trusted-member role was retired 2026-09-04, ADR-0018.)Only owner (and the developer maintainer) can write schedules. Roles are developer / owner / viewer.
In local development, set OWNER_EMAIL to your Google account. Before handoff, replace it with Victory's Google account email (or several, comma-separated, if the streamer uses more than one account). When more than one is listed, the first is the primary owner (calendars.owner_id) and the rest are synced into calendar_co_owners by db/seeds/0013_sync_co_owners.sql. If Supabase environment variables are empty, Google login is disabled.
npm install
npm run dev
Copy .env.example to .env.local and fill Supabase values before wiring real auth/data.
npm run lint
npm run typecheck
npm run test
npm run build
npm run test:e2e
npm run test:visual