Features • Development • Self-hosting • License
An all-in-one practice hub for managing repertoire and scores, and turning daily sessions into measurable progress.
Be sure to ⭐️ or fork this repo if you find it useful!
KeyTrack helps musicians organize their practice and repertoire efficiently.
- Repertoire Management: Organize your pieces with automatic metadata fetching from MusicBrainz.
- Score Discovery: Search and import public domain scores directly from IMSLP.
- Interactive Score Viewer:
- Built-in PDF Viewer for your digital sheet music.
- Integrated Metronome with adjustable BPM and time signatures.
- Tuner with frequency detection and visualization.
- and more ...
- Practice Tools: Track your progress and manage your daily practice sessions.
- Authentication: Secure user accounts via Google.
Follow these steps to set up the project locally for development.
- Clone the repository:
git clone https://github.com/Nitestack/keytrack.git
cd keytrack- Install dependencies:
pnpm install- Configure Environment Variables: Copy the example file and update the values.
cp .env.example .envNote: You will need to obtain
GOOGLE_IDandGOOGLE_SECRETfrom the Google Cloud Console for authentication to work.
- Start the Database: Spin up the PostgreSQL container.
docker compose -f compose.dev.yml up -d- Initialize the Database: Push the schema to your local database.
pnpm db:migrate- Run the Development Server:
pnpm devOpen http://localhost:3000 to view the app.
KeyTrack is containerized and ready for deployment using Docker Compose.
-
Prepare Files: Copy
compose.ymland.env.example(renamed to.env) to your server. -
Setup Volumes: Create the uploads directory on your host machine to ensure file persistence and correct permissions.
# Create the directory
mkdir -p /path/to/keytrack/uploads
# Set ownership to the non-root user (ID 1001) used in the container
chown -R 1001:1001 /path/to/keytrack/uploads- Update Configuration: Edit your
compose.ymlvolume mapping to point to your created directory:
volumes:
- "/path/to/keytrack/uploads:/app/uploads"- Start the Service:
docker compose up -d --buildThis project is licensed under the Apache-2.0 license.