尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A modern song library app for musicians featuring chords and lyrics, built with Next.js and ChordPro format.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A modern song library and collaboration platform for musicians, featuring chords and lyrics for your favorite songs. Built with Next.js and powered by the ChordPro file format for chord notation.
A Capo is a small device that clamps onto the neck of a guitar and shortens the length of the strings. The main
advantage of using a capo is that it lets a guitarist play a song in different keys while still using first-position
open-string chord forms.
During past months my son has been learning to play guitar. I decided to build him a tool to make his learning process easier. As a passionate musician and software engineer, I want to create something more powerful by combining my knowledge of music and programming.
Beyond helping beginners learn, this app serves musicians of all levels by providing an organized song library with easy access to chords and lyrics for practice and performance.
Apart from that, it sounds fascinating and fun 🤓.
Browse and manage your personal collection of songs. Filter by musical key, BPM range, and status (active/archived). Full-text search across titles and artists. Songs are stored in ChordPro format and support rich metadata including BPM, key, capo position, and transposition.
Each user can save personal overrides for any song: capo position, transposition semitones, and display font size. These settings are stored per user and do not affect how other users see the same song.
View and edit songs with a split-pane interface: a CodeMirror-powered ChordPro editor on one side and a live-rendered lyrics/chord view on the other. Supports per-section chord colors, multi-column layout preferences, auto-scroll for hands-free performance, and automatic conversion of pasted "chords-over-words" text into ChordPro format.
Create and manage playlists of songs. Reorder songs via drag-and-drop. Archive playlists to hide them from active view without deleting — unarchive at any time. Each playlist can be shared publicly with a unique share code, with optional guest edit access.
A cart-like interface for quickly building playlists. Add songs to a draft from anywhere in the library, then save the draft as a new or existing playlist.
Share any playlist publicly via a unique share code. Recipients can view the full playlist and individual song sheets without needing an account. Real-time updates keep shared playlists in sync when the owner reorders songs.
Create new songs or edit existing ones using the ChordPro format. The song editor includes syntax highlighting, live preview, and metadata fields (title, artist, key, BPM, capo, transpose).
Browse a built-in chord glossary organized by key, search chords by name, and identify chords from guitar fingering positions. Supports both left-hand and right-hand chord diagram orientations.
Play any chord as audio directly from the chord glossary, chord analyzer, or the lyrics editor chord diagram dialog. Powered by Tone.js with a singleton MIDI sampler for low-latency playback.
Create teams and invite other users by email. Team members share a common song library and playlists. Role-based access control (owner, admin, member, viewer). Manage pending invitations, transfer ownership, and switch between personal and team contexts. Real-time updates for team membership changes.
An overview page showing library stats (total songs, playlists, teams) and recently added songs for quick access.
Tracks user engagement across the app in real time to surface relevant content and support future personalization.
Sign in with Google OAuth. Sessions are managed via Supabase Auth.
This project uses Feature-Based Architecture (FBA) for better code organization and scalability.
| Feature | Purpose |
|---|---|
activity | Real-time activity tracking across the app |
app-context | Global context for team/bucket switching and view filters |
auth | Google OAuth authentication via Supabase Auth |
chord-audio | Chord audio playback via Tone.js MIDI sampler |
chords | Chord glossary, search, and guitar chord analyzer |
dashboard | Overview stats (songs, playlists, teams) and recent songs |
feedback | In-app feedback and newsletter opt-in form |
lyrics-editor | CodeMirror ChordPro editor with live preview and auto-scroll |
playlist-draft | Quick-add-to-playlist cart for building setlists on the fly |
playlist-sharing | Public playlist sharing via unique share codes |
playlists | Create, manage, reorder, share, and archive playlists |
settings | Theme (light/dark), language, chord hand, account management |
song-draft | Create and edit songs in ChordPro format |
songs | Song library management with search, filtering, and editing |
teams | Team creation, role-based access, and email invitations |
Install fnm, Node, and pnpm:
# Install fnm as node version manager
curl -fsSL https://fnm.vercel.app/install | bash
# fnm automatically uses the Node version from .node-version
fnm use
# Install pnpm globally
npm install -g pnpm
# Install project dependencies
pnpm install
# Start Supabase services locally
pnpm supabase start
See Supabase Local Development Guide for more details.
To enable Google OAuth for local development:
http://localhost:3000/auth/callbackFor local testing with Google Auth, create OAuth credentials with:
http://localhost:3000/auth/callbackpnpm dev
This starts the Next.js development server at http://localhost:3000.
Note: Ensure Supabase services are running before starting the dev server.
Contribute with me, supporting this project through
Happy Coding!