尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A social rating site for music: rate albums, artists and songs out of 10, follow people, and see three scores wherever something is rated (yellow for everyone, red for you, blue for the people you follow).
Live at https://mulo-plum.vercel.app.
Next.js 16 (App Router) with React 19 and Tailwind v4, on Vercel in Sydney
(syd1). Supabase (Postgres, auth, storage) in Sydney. The catalogue comes
from MusicBrainz and is cached in Postgres; artist photos and bios from
Wikidata and Wikipedia; popularity from ListenBrainz.
You need Node 22 (see .nvmrc) and access to a Supabase project.
npm install
cp .env.example .env.local # then fill in the values
npm run dev # http://localhost:3000
.env.example explains each setting. The three Supabase ones are required;
the site logs a plain message at startup for any that are missing.
Use a test project for local work, not the live one. The service role key bypasses row-level security, so a local mistake with it lands on real data.
| Command | What it does |
|---|---|
npm run dev | Development server with hot reload. |
npm run build | Production build. |
npm run start | Serve the production build. |
npm run typecheck | Generate route types, then check TypeScript. |
npm run lint | ESLint. |
npm run format | Rewrite files with Prettier. |
npm run format:check | Report files Prettier would change. |
npm test | Unit tests (Vitest), including replaying every migration in PGlite. |
npm run test:e2e | Browser tests (Playwright) against a production build. Build first. |
npm run check | Typecheck, lint, format check and unit tests in one go. |
npm run db:types | Regenerate src/lib/supabase/database.types.ts from the migrations. |
Browser tests that sign in need a non-production Supabase project and the
E2E_* settings in .env.example; without them they skip.
GitHub Actions (.github/workflows/ci.yml) runs typecheck, lint, the
Prettier check, unit tests, a production build and the browser tests on
every push and pull request. A red cross on a commit in GitHub means one of
them failed; the run's page says which.
A push to master deploys to production on Vercel. Other branches get
preview deployments.
Database changes are separate: each file in supabase/migrations/ is run by
hand in the Supabase SQL editor, in order. Every migration is written to be
safe to run twice. If a code change depends on a migration, run the
migration first; docs/supabase-setup.md lists the ones still pending.
One-off maintenance scripts in scripts/ run against the database named in
.env.local, for example:
node --env-file=.env.local scripts/seed-catalog.mjs --albums=1000
Each explains what it does and its options at the top of the file, including whether it's safe to stop and rerun.