Thanks for your interest in improving this project! This guide explains how to get set up, make changes, and submit a great pull request.
- Fork and clone your fork
- Use Node.js 20+ (LTS recommended)
- Install dependencies:
npm ci(preferred) ornpm install
- Start the dev server:
npm run dev(Vite)
- Open
http://localhost:5173in a Chromium-based browser (Chrome/Edge)
npm run dev— start Vite dev servernpm run build— type-check and build production assetsnpm run lint— run ESLintnpm run typecheck— run TypeScript with no emitnpm test— run unit tests (Vitest)npm run test:coverage— run tests with coverage
- Create a feature branch from
main(e.g.,feat/…,fix/…,chore/…) - Keep PRs focused and reasonably small
- Write or update tests for behavior changes
- Run locally before opening a PR:
npm run lintnpm run typechecknpm testnpm run test:coverage(for significant changes)
- Fill out the PR template and link related issues (e.g.,
Closes #123)
- TypeScript first: avoid
any, favor explicit types for public APIs - Prefer clear, descriptive names over abbreviations
- Use early returns and guard clauses to keep control flow flat
- Keep components small and focused; lift shared logic into hooks or utils where appropriate
- Run
npm run lintand fix issues (you can tryeslint . --fixlocally)
- Unit tests use Vitest + Testing Library
- Place tests near code or in
__tests__directories (project already uses both patterns) - Test behavior, not implementation details; prefer user-facing assertions
- Update snapshots purposefully and review diffs
- Maintain keyboard accessibility and focus states
- Prefer semantic HTML; use ARIA only when needed
- For visual changes, include before/after screenshots or GIFs in your PR
- Use a Chromium-based browser (Chrome/Edge) for the Web Serial API
- Works on
localhostor HTTPS only; grant serial permissions when prompted - Example firmware:
example_firmware/basic_plotter/basic_plotter.ino- Open in Arduino IDE, select your board/port, upload, then connect from the app
- Prefer Conventional Commits when possible:
feat:,fix:,chore:,docs:,refactor:,test:,build:
- Keep them concise and meaningful; reference issues where applicable
- Fill out the PR template (auto-included when opening a PR)
- Ensure CI/lint/tests pass
- Respond to review feedback promptly; squash or tidy commits if requested
Open a discussion or an issue with details about your environment and the problem or idea. PRs are welcome even if they’re marked as draft.
Thank you for contributing!