Thanks for your interest in contributing! This document covers the basics for getting started.
- Fork the repository and clone your fork
- Install dependencies:
npm install - Start the dev server:
npm run dev - Run tests:
npm test - Build for production:
npm run build
You'll need Node.js 18+ and npm installed.
- Create a branch from
mainfor your work - Make your changes, keeping commits focused and well-described
- Run
npm testto make sure existing tests pass - If you're adding new logic in
src/lib/, add tests alongside it insrc/lib/__tests__/ - Run
npm run buildto verify production builds succeed - Open a pull request against
main
- TypeScript — All source files use TypeScript. Avoid
anywhere possible. - React — Functional components with hooks only. No class components.
- State — Zustand stores in
src/store/. Keep store logic out of components. - UI — MUI (Material UI) components. Follow existing patterns for styling with
sxprop. - Offline-first — Non-shared mutations go through the offline queue (
src/lib/offlineQueue.ts). Shared items require connectivity. - Validation — Input validation lives in
src/lib/validation.ts. Use it in both UI and store layers. - Testing — Vitest with happy-dom. Property-based tests use fast-check. Tests live in
__tests__/directories next to the code they test.
- Bug fixes (check existing issues or file a new one using the bug report template)
- Feature requests (open an issue using the feature request template first to discuss)
- Performance improvements
- Accessibility improvements
- Documentation improvements
- Test coverage for uncovered logic
- Keep PRs focused on a single change
- Include a clear description of what changed and why
- Reference any related issues
- Make sure tests pass and the build succeeds
- Don't introduce new dependencies without discussion in an issue first
Use the bug report template to file issues. Include steps to reproduce, expected behavior, and screenshots if applicable.
Be respectful and constructive. We're all here to build something useful together.
By contributing, you agree that your contributions will be licensed under the AGPL-3.0 license.