-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing
The welcome message and the spirit of the project live in CONTRIBUTING.md — every contribution is welcome, technical or not. This page is the practical how-to: setup, code style, tests, and the workflows for common changes.
If you're looking for something concrete to pick up, TODO.md lists open items grouped by area (security, MIDI core, architecture, UI, accessibility, performance, infrastructure). Nothing in there is reserved — grab whatever interests you.
git clone https://github.com/glloq/General-Midi-Boop.git
cd General-Midi-Boop
npm install
npm run dev # backend with hot reloadFor the frontend dev server only:
npm run dev:frontend- Open a feature branch off
main. - Keep changes focused — one feature or fix per PR.
- Follow the commit-message style visible in
git log(imperative mood, scope-prefixed where useful).
-
Linter: ESLint, configured in
.eslintrc.json. Runnpm run lintandnpm run lint:fix. -
Formatter: Prettier, configured in
.prettierrc. Runnpm run format. -
Type-checking: TypeScript ambient types in
src/types/. Runnpm run typecheck. -
Pre-commit hook: Husky + lint-staged auto-lints staged files (
.husky/pre-commit). Don't bypass with--no-verify.
| Command | What it runs |
|---|---|
npm test |
Backend unit + integration tests (Jest, ESM) |
npm run test:coverage |
Same with coverage report |
npm run test:frontend |
Frontend tests (Vitest) |
npm run test:frontend:watch |
Frontend tests in watch mode |
npm run bench |
Performance benchmarks under tests/performance/
|
Tests live under tests/ (unit, integration, performance, frontend).
Significant design choices are tracked as ADRs in docs/adr/. Read existing ADRs before proposing structural changes; add a new ADR when you make one.
- Update
docs/for deep technical changes. - Update the relevant wiki page in
wiki/for user-facing changes — it auto-syncs to the GitHub Wiki on merge tomain. - Add a note to
CHANGELOG.mdfor anything user-visible.
- Create or edit a module under
src/api/commands/. - Export
{ commands: { my_command: handler } }— theCommandRegistryauto-discovers it. - Cover it with a unit test.
- Document parameters and return shape in
docs/API.md. - Mention it in API-Reference if the count or example list changes.
- Subclass
BaseLightingDriver. - Register it in the lighting manager's driver map.
- Add fixture profiles to
DmxFixtureProfiles.jsif the driver speaks DMX. - Update Lighting with the new driver row.
Use GitHub Issues. Helpful information:
- OS, Node version, hardware (Pi 3B+ / 4 / 5)
- Output of
npm startwithGMBOOP_LOG_LEVEL=debug - Steps to reproduce, expected vs. actual behaviour
- Relevant section of
CHANGELOG.mdif upgrading
Général Midi Boop · MIT License · Sources tracked in wiki/ — edits synced on push to main.
Getting Started
Interface — Pages & Modals
- Interface-Main-Page
- Interface-Instrument-Creation
- Interface-Virtual-Piano
- Interface-Loop-Manager
- Interface-Lighting-Control
- Interface-Playlist
- Interface-Microphone
- Interface-Settings
- Interface-Hand-Management
Core Concepts
Reference
Operations
Community