尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Portal do słuchania i „podróżowania” po muzyce (metal, prog, jazz):
Każda płyta ma link do Spotify i Tidal (bezpośredni, jeśli MusicBrainz go zna; inaczej wyszukiwanie).
Nie budujemy własnej bazy wiedzy. Katalog jest w zewnętrznych bazach, kluczem jest MBID (MusicBrainz ID):
| Co | Źródło |
|---|---|
| płyty, artyści, składy (kto grał na jakim nagraniu), członkowie zespołów, linki | MusicBrainz API (src/lib/musicbrainz.ts) |
| opisy | Wikipedia (pl, potem en) — tytuł artykułu z relacji MB wikipedia / wikidata (src/lib/wikipedia.ts) |
| okładki | Cover Art Archive (po MBID release-group) |
| premiery, best of | plik purenewshit.html (scripts/import-pns.ts) |
| użytkownicy, preferencje, oceny, komentarze | nasz Postgres (src/db/schema.ts) |
Odpowiedzi API są buforowane w tabeli api_cache (wyszukiwanie 1 dzień, lookup 7 dni, Wikipedia 14 dni). MusicBrainz wymaga ≤1 zapytania/s i własnego User-Agent — klient to egzekwuje.
Next.js 15 (App Router, server actions, TypeScript) · Tailwind 4 · Drizzle ORM + PostgreSQL · Auth.js v5.
Potrzebny tylko Node.js 20+.
cp .env.example .env # domyślnie DATABASE_URL="" → baza PGlite w pliku ./data/pglite
npm install
npm run setup # migracje + import premier/best of z data/purenewshit.html
npm run dev # http://localhost:3000
Prawdziwy Postgres (docker compose, Homebrew, Neon): ustaw DATABASE_URL="postgresql://…" — te same komendy.
PGlite to Postgres skompilowany do WASM; dane siedzą w data/pglite. Wystarcza na własny użytek; na serwer bierz zwykłego Postgresa.
Bez kluczy OAuth działa logowanie deweloperskie (AUTH_DEV_LOGIN=true, tylko poza produkcją): na /login wpisujesz sam e-mail.
W .env ustaw pary AUTH_<PROVIDER>_ID / AUTH_<PROVIDER>_SECRET; nieustawieni dostawcy nie pokazują się na /login.
Redirect URI w konsoli dostawcy: https://twoja-domena/api/auth/callback/<provider>, gdzie provider ∈ google, microsoft-entra-id, apple, facebook.
Apple wymaga wygenerowania client secret (JWT) — patrz dokumentacja Auth.js.
src/app/ strony (server components) + actions.ts (server actions)
premiery/ best-of/ listy z importu
album/[mbid]/ płyta: skład, utwory, oceny, komentarze, "więcej od artysty"
artist/[mbid]/ zespół LUB muzyk: członkowie / zespoły, dyskografia, "grał na płytach"
szukaj/ listy/ ja/ wyszukiwarka, listy społeczności, profil i preferencje
go/release/[id] z pozycji premier na stronę płyty (dopasowanie MBID w locie)
src/lib/musicbrainz.ts klient MB + normalizacja (skład z relacji nagrań)
src/lib/user-data.ts oceny, komentarze, preferencje (Drizzle)
src/lib/pns-parser.ts parser SECTIONS/BEST z purenewshit.html
src/db/schema.ts schemat bazy
scripts/import-pns.ts import premier/best of
tests/ testy jednostkowe (fixture'y MB) + e2e (Playwright)
npm test # jednostkowe: klient MB na fixture'ach, parser
npm run typecheck
# e2e (wymaga bazy i serwera dev z fixture'ami):
MB_FIXTURES=tests/fixtures/mb npm run dev &
node tests/e2e.mjs
MB_FIXTURES=<katalog> przełącza klienta MusicBrainz na pliki (tests/make-fixtures.ts je generuje).
Piątkowe zadanie publikuje nowy purenewshit.html. Wystarczy:
npm run import:pns -- /sciezka/purenewshit.html # albo URL, jeśli plik jest publiczny
Sekcje o tym samym id są nadpisywane, starsze zostają jako archiwum tygodni (/premiery?sekcja=archiwum). Dopasowania MBID dla niezmienionych pozycji są zachowywane.
npm run build && npm start (albo Vercel + Neon/Supabase Postgres; ustaw DATABASE_URL, AUTH_SECRET, AUTH_URL, klucze OAuth, MUSICBRAINZ_USER_AGENT z kontaktem).AUTH_DEV_LOGIN nie ustawiaj na produkcji (i tak jest wyłączone przy NODE_ENV=production).npm run db:migrate..env już przewidziany), powiadomienia o premierach ulubionych artystów, rekomendacje z wag stylów i lubianych płyt, oznaczanie „słuchałem”.