Skip to content

sboagy/tunetrees

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

677 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TuneTrees Logo

TuneTrees

Practice management for musicians — Track repertoire, schedule reviews with spaced repetition, and keep organized notes.

TuneTrees is built for tune-based traditions:

  • Irish/Scottish/Cape Breton trad
  • Old-time, bluegrass
  • Jazz standards
  • Folk songs
  • Any repertoire where you're building a "book" of discrete pieces

🎵 tunetrees.com | 📖 Documentation | 🐛 Issues

Status

⚠️ Work in Progress — Functional but not feature complete. See roadmap →

Features

  • 🎯 Spaced Repetition — FSRS algorithm schedules reviews at optimal intervals
  • 📱 Works Offline — Full functionality without internet, syncs when connected
  • ☁️ Cloud Sync — Practice on any device, data syncs automatically
  • 🎸 Any Instrument — Multiple Repertoires
  • 🎯 Goal Focused — Per-tune goal setting

Quick Start

Use the App

Visit tunetrees.com — no install required!

Install as an app:

  • iOS: Safari → Share → Add to Home Screen
  • Android: Chrome → Menu → Install app
  • Desktop: Chrome → Install icon in address bar

Run Locally

git clone https://github.com/sboagy/tunetrees.git
cd tunetrees
npm install
cp .env.example .env.local  # Add Supabase credentials
npm run dev

Open http://localhost:5173

Sync Diagnostics (Optional)

To help debug sync performance and E2E flakiness, you can enable compact per-sync diagnostics logs:

  • Client (browser): set VITE_SYNC_DIAGNOSTICS=true
  • Worker (optional): set SYNC_DIAGNOSTICS=true (and optionally SYNC_DIAGNOSTICS_USER_ID=<supabase auth uid>)

See Developer Setup and Deployment for details.

Tech Stack

Layer Technology
Frontend SolidJS, TypeScript, Tailwind CSS
Local DB SQLite WASM (sql.js) + Drizzle ORM
Cloud Supabase (PostgreSQL, Auth, Realtime)
PWA Vite PWA + Workbox
Deploy Cloudflare Pages

Documentation

Scripts

npm run dev        # Development server
npm run build      # Production build
npm run test       # Unit tests
npm run test:e2e   # E2E tests (Playwright)
npm run typecheck  # TypeScript check
npm run lint       # Biome lint

# Schema codegen (Postgres → SQLite)
npm run codegen:schema       # Generate drizzle/schema-sqlite.generated.ts via Postgres introspection
npm run schema:sqlite:check  # Drift guard (alias of codegen:schema:check)

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run npm run typecheck && npm run lint && npm run test
  5. Submit a pull request

See Development Setup for details.

License

MIT

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors