Skip to content

feat: add web interface, REST API server, and monorepo package restructuring - #15

Merged
johnksterling merged 3 commits into
mainfrom
feature/web-interface
Sep 19, 2026
Merged

johnksterling merged 3 commits into
mainfrom
feature/web-interface

Conversation

@johnksterling

Copy link
Copy Markdown
Owner

Summary

Introduces a web interface and local REST API server (jazz-tools serve) for interactive harmonic analysis and companion score previewing, while reorganizing the Go codebase into idiomatic cmd/jazz-tools and internal/jazz packages.

Changes Made

  • Project Layout Modernization:
    • Reorganized 23 domain files into internal/jazz/ with package declaration package jazz.
    • Moved CLI entry point to cmd/jazz-tools/main.go.
    • Updated .github/workflows/ci.yml build step to target ./cmd/jazz-tools.
  • HTTP Server & REST API (internal/server/):
    • Added jazz-tools serve [--port 8080] [--host 0.0.0.0] command.
    • Added POST /api/analyze to parse iReal Pro URLs, HTML playlists, or MusicXML files into structured harmonic journey and Berklee device data.
    • Added POST /api/companion/xml for companion sheet MusicXML generation.
    • Added POST /api/companion/pdf for LilyPond print PDF compilation.
    • Added GET /api/samples (bundled tunes: Waltz For Debby, Jordu) and GET /api/health.
  • Interactive React SPA (web/):
    • Built with React 19, TypeScript, Vite, Tailwind CSS, and OpenSheetMusicDisplay (OSMD).
    • Live SVG score rendering of voice-led 3rds and 7ths.
    • Visual harmonic journey badge timeline with Berklee palette colors.
    • Identified Berklee harmonic devices list (ii-V, subV, secondary dominants, turnarounds).
    • Measure-by-measure chord table with voice-leading details.
    • Single-binary distribution via Go embed.FS in web/embed.go (no Node.js required at runtime).
  • Documentation:
    • Updated README.md with jazz-tools serve walkthrough and build instructions.

Verification & Testing

  • go test -v -race ./... passes
  • go vet ./... passes
  • gofmt -l . clean
  • LilyPond PDF compilation verified
  • CLI smoke tests (--help, analyze, serve) verified

@johnksterling
johnksterling merged commit 8813c20 into main Sep 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant