# Contributing to JamBuddy JamBuddy is two things at once: a live **jam companion** that hears your key and chords and shows you how to play over them, and an open **learning platform** for the style knowledge behind those changes. The full vision is in [`GOAL.md`](GOAL.md). The best part: **the style packs are data, not code.** If you're a gigging musician who knows how a style is voiced and played, you can teach JamBuddy a new genre by filling in a structured file — no audio or detection internals required. This guide is about that path. --- ## Quick start (setup) You'll need [Node.js](https://nodejs.org/) (18+) and, for the live app, a microphone. ```bash git clone https://github.com/whattheflat/whattheflat.git cd whattheflat npm install # Desktop app — Vite dev server + Electron window, hot reload, mic access npm run electron:dev # Or browser-only (no Electron shell) — then open http://localhost:5173 npm run dev ``` You do **not** need the app running to add a style — adding a style is editing data files and running one validator command. But it's nice to see your pack light up live once it's in. --- ## Add a music style without deep coding This is the heart of contributing. A "style" is a genre pack: the standard progressions of that style, plus idiomatic ways to play each one. One pack renders in **all 12 keys** automatically, because everything is stored key-agnostically (scale degrees, not chord names). The data contract you're filling is [`src/data/kb/SCHEMA.md`](src/data/kb/SCHEMA.md) — read it; it's the source of truth. The steps below are the workflow around it. ### Step 1 — Copy an existing pack as your template A style lives in `src/data/kb/