Thanks for your interest in improving ZenNotes — a keyboard-first, Markdown-first desktop notes app built on Electron, React, TypeScript, and CodeMirror 6.
- For anything non-trivial, open an issue first so we can agree on scope and approach before you spend time building.
- For small fixes (typos, obvious bugs, dependency bumps), open a PR directly.
- For security issues, do not open a public issue — follow SECURITY.md.
git clone https://github.com/ZenNotes/zennotes.git
cd zennotes
npm install
npm run devUseful scripts:
npm run dev— run the app with hot reloadnpm test— run the test suitenpm run build— produce a production buildnpm run lint— run the linter
- Fork the repo and create a feature branch from
main. - Keep commits focused. A clear commit message beats a long PR description.
- Add or update tests when you change behavior.
- Make sure
npm testandnpm run buildpass locally. - Open a pull request against
main.
Branch protection on main enforces:
- Pull request required — no direct pushes
- One approving review from a code owner (see .github/CODEOWNERS)
- Green CI across Linux, macOS, and Windows build jobs
- Linear history (squash merge only; the head branch is auto-deleted)
- All review comments resolved before merging
- Match the style of the surrounding code — don't introduce new patterns mid-file.
- Keep the scope of each PR tight. Refactors, feature work, and formatting changes belong in separate PRs.
- ZenNotes is keyboard-first. Every new user-facing feature should ship with a keybinding or leader flow.
Be kind, assume good faith, focus on the work.
By contributing, you agree that your contributions are licensed under the MIT License.