尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A song-leader PWA: browse/filter/sort a song library, get guided to a pick
several ways (step-by-step, straight to genre, or a scatter-style multi-pick
screen), rate songs after playing them, and queue songs up during a show.
Frontend is React + TypeScript + Vite. Backend is Supabase (Postgres +
row-level security, no Supabase Auth — access is a passphrase checked
server-side). This repo is disconnected from the original author's Supabase
project and Vercel deployment — forking it does not give you access to
either. To run your own copy, you need your own Supabase project.檢視完整 README ↗A song-leader PWA: browse/filter/sort a song library, get guided to a pick several ways (step-by-step, straight to genre, or a scatter-style multi-pick screen), rate songs after playing them, and queue songs up during a show.
Frontend is React + TypeScript + Vite. Backend is Supabase (Postgres + row-level security, no Supabase Auth — access is a passphrase checked server-side). This repo is disconnected from the original author's Supabase project and Vercel deployment — forking it does not give you access to either. To run your own copy, you need your own Supabase project.
Free tier is fine. Create one at supabase.com, then grab two things from Project Settings → API:
anon public keyAnd one more from Project Settings → API → Project API keys:
service_role key (secret — only used by the one-off script in
scripts/, never by the deployed app)Everything — tables, row-level security policies, functions — lives in
supabase/migrations/, in order. Easiest path: open your project's
SQL Editor in the Supabase dashboard and run each file in this repo's
supabase/migrations/ folder once, in filename order (they're
timestamp-prefixed, so sorted = chronological):
20260915195120_init.sql
20260915200741_tag_rpc.sql
20260915213000_category_registered_values.sql
20260916140000_song_not_applicable_categories.sql
20260916150000_viewer_role.sql
20260918071459_scatter_picker.sql
(Or, if you have the Supabase CLI: npx supabase link --project-ref <ref>
then npx supabase db push from the repo root.)
This creates an initial category/rating-scale set to get started with — edit, rename, add, or remove categories freely from the app's Settings screen afterward. It also seeds a placeholder admin passphrase; see step 4.
cp app/.env.example app/.env.local
Fill in:
VITE_SUPABASE_URL=<your project URL>
VITE_SUPABASE_ANON_KEY=<your anon key>
The app is gated by a passphrase (checked server-side via RLS, not Supabase Auth). The migration seeds a placeholder. In the SQL Editor:
update app_config set passphrase = 'your-admin-passphrase';
There's also an optional read-only viewer passphrase (browse/filter/sort
only, no editing) — defaults to viewonly:
update app_config set viewer_passphrase = 'your-viewer-passphrase';
song_import.csv in the repo root has ~600 songs (artist, title, Ultimate
Guitar link) to seed the library with, if you want a starting point instead
of an empty list:
cp scripts/.env.example scripts/.env
Fill in SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY (from step 1), then:
cd scripts
npm install
node import-songs.mjs
It refuses to run if the songs table isn't empty, so it's safe to skip
if you'd rather add songs from scratch through the app's "Add Song" screen.
cd app
npm install
npm run dev
Connect the repo to your own Vercel project, set its Root Directory to
app (in Project Settings → General — the app lives in a subfolder, not
the repo root), and set the same two VITE_SUPABASE_URL /
VITE_SUPABASE_ANON_KEY env vars there. Vercel auto-detects the Vite
build once the root directory is set.