尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Live-music discovery through listening - Spotify playlists of artists coming to your city
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A website for live-music discovery that works through listening instead of listings. It connects to a user's listening history, finds artists they'd like with upcoming concerts in their city, and generates a playlist with a few top songs for each one. Users can hear who's coming to town and decide if they want to see the. The playlist stays fresh as new concerts get announced.檢視完整 README ↗A website for live-music discovery that works through listening instead of listings. It connects to a user's listening history, finds artists they'd like with upcoming concerts in their city, and generates a playlist with a few top songs for each one. Users can hear who's coming to town and decide if they want to see the. The playlist stays fresh as new concerts get announced.
Full-stack monorepo: FastAPI backend, Next.js frontend, Supabase for Postgres and auth, Docker Compose for the app services.
backend/)alembic init -t async migrations)frontend/)supabase start)supabase start # database, auth, Studio, Mailpit
docker compose up --build # API, web, sync worker
docker compose run --rm api uv run python -m cli.seed # first run only: seed the cities table
supabase start runs the data and auth layer (it must be up before docker compose up):
localhost:54322 (user/password postgres, database postgres)docker compose up runs the app services:
sync_runs queue; docker compose logs -f worker)Tear down with docker compose down and, when done, supabase stop.
On a fresh database, seed the cities table once (downloads the current GeoNames dumps):
docker compose run --rm api uv run python -m cli.seed
Re-run the same command any time to refresh the city data.
Host ports are configurable, so a second app stack (e.g. from a git worktree) can run alongside the main one under its own project name; both share the single Supabase stack:
API_PORT=8001 WEB_PORT=3001 docker compose -p my-branch up -d --build
docker compose -p my-branch down -v # tear it down
Or, run scripts/run-local.sh from a worktree to copy .env from main (if missing) and launch the stack using available ports.
All configuration lives in a single .env at the repo root (cp .env.example .env). Defaults cover everything except secrets. See .env.example for details.
cd backend
uv run ruff check . # lint (add --fix to auto-fix)
uv run ruff format . # format
uv run ty check # type check
uv run pytest # tests
cd backend
uv add <package> # add a runtime dependency
uv add --dev <package> # add a dev dependency
uv sync # sync the environment with the lockfile
uv lock --upgrade # upgrade all dependencies within constraints
cd frontend
npm install # install dependencies
npm run dev # dev server on http://localhost:3000
npm run lint # eslint
npm run build # production build
npm start # serve the production build
Autogenerate-driven Alembic workflow. Migrations are forward-only: fix mistakes with a new revision, do not rely on downgrades.
cd backend
uv run alembic revision --autogenerate -m "describe the change"
# review the file in migrations/versions/, then:
uv run alembic upgrade head