Constraint Composer
<em>Constraint Programming</em> for the <em>Algorithmic Composition</em> of <em>Polyphonic Music</em>
Dependencies
Browser dependencies are vendored in assets/vendor/; loaded as native ES modules (no CDN, no bundler):
- Alpine.js: light reactive UI framework
- html-midi-player: MIDI playback and staff/waterfall visualization (bundled with Tone.js and Magenta.js)
- MidiWriterJS: MIDI file generation
- MiniZinc (Wasm): CP solver running in the browser (Wasm)
- Pico CSS: minimal CSS framework
Node.js (package.json) is only needed for development tooling and scripts, including:
- coverage-badges-cli: README badges
- commitlint: conventional commit messages
- ESDoc: API documentation
- ESLint + Prettier: linting & formatting
- Vitest + Playwright: unit, integration & system tests with coverage
Development
Install dependencies, execute tests, generate docs:
npm install && npm run tests && npm run docs
Deployment
The app consists only of static files, so any HTTP server will do; for instance:
npm run app
