https://github.com/zacharyfmarion/pitch-coach
Privacy-first vocal pitch coach web app
https://github.com/zacharyfmarion/pitch-coach
Last synced: 2 months ago
JSON representation
Privacy-first vocal pitch coach web app
- Host: GitHub
- URL: https://github.com/zacharyfmarion/pitch-coach
- Owner: zacharyfmarion
- Created: 2026-05-13T14:49:35.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-14T04:16:28.000Z (3 months ago)
- Last Synced: 2026-05-14T06:20:47.649Z (3 months ago)
- Language: TypeScript
- Homepage: http://zac.is-a.dev/pitch-coach/
- Size: 158 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Pitch Coach
A privacy-first web MVP for vocal exercise practice. The app plays a major triad prompt, listens for the sing-back, draws detected pitch against target notes, scores each note, retries missed attempts, and advances by half step after a pass.
## Deployment
GitHub Actions includes CI and a GitHub Pages deployment workflow for `main`. The app publishes here:
https://zac.is-a.dev/pitch-coach/
Microphone input requires HTTPS or localhost.
## Run
```bash
pnpm install
pnpm dev
```
## Verify
```bash
pnpm test
pnpm build
pnpm test:browser
pnpm validate:changes
```
`pnpm test:browser` uses Playwright Chromium. If the browser binary is missing, run:
```bash
pnpm exec playwright install chromium
```
## Architecture
- `src/domain`: pure music math, exercise generation, scoring, and lesson state.
- `src/audio`: browser microphone capture, AudioWorklet frame capture, Pitchy detection, and Tone.js prompt playback.
- `src/app`: React controller and app composition.
- `src/components`: reusable visual feedback components.
- `src/storage`: settings-only local persistence.
- `.github/workflows`: CI and GitHub Pages deployment.
No microphone audio is saved or uploaded. The app stores only local settings such as range, tempo, and tolerance.