Thanks for your interest in contributing! Checkmate is an open-source, friendly project focused on learning and growth.
We truly appreciate all kinds of contributions — code, ideas, translations or documentation. Contributing helps you level up while making the project better for everyone.
Before you start, please take a moment to read the relevant section. It helps us review and accept contributions faster, and makes the whole process smoother for everyone. 💚
PS: We work closely with contributors on our Discord channel. You’ll find community members, core maintainers, and first-timers helping each other out.
Ask anything in our Discord server — we’re friendly and happy to help. Our core contributors are active and ready to support you. You can also use GitHub Discussions section to ask your questions.
- Search existing issues.
- If it’s not listed, open a new issue.
- Include as much detail as possible: what happened, what you expected, and steps to reproduce. Logs and screenshots help.
- Open a new issue with the feature request template.
- Share your use case and why it would help.
- You can discuss it in Discord before you code.
Frontend:
npm install
npm run dev
Backend: Clone and follow instructions in checkmate-backend.
By default, the frontend expects the backend on http://localhost:3001
. Update configs if needed.
- Pick or open an issue (check
good-first-issue
s first) - Ask to be assigned. If there is alrady someone assigned and it's been more than 7 days, you can raise the flag and ask to be assigned as well.
- Create a branch from
develop
. - Write your code.
- Run and test locally.
- Open a PR to
develop
.
Start with good first issues.
Docs live in checkmate-documentation. You can fix typos, add guides, or explain features better.
We use PoEditor for translations. You can:
- Sign up and join your language team.
- Translate UI strings.
- Ask questions on Discord in the relevant #translations channel.
Make sure all new UI strings in code use t('key')
.
Follow the pull request checklist. Your PR should:
- Be focused on one issue.
- Be tested locally.
- Use our linting and translation rules.
- Include the related issue (e.g.
Fixes #123
). - Be opened against the
develop
branch.
- Use ESLint and Prettier (
npm run lint
). - Follow naming conventions:
camelCase
for variables,PascalCase
for components,UPPER_CASE
for constants. - No hard-coded strings — use
t('your.key')
for everything visible. - Use the shared theme and components. No magic numbers or hardcoded styles.
- Follow structure and patterns already used in the codebase.
Before submitting your pull request, please confirm the following:
- You have tested the app locally and confirmed your changes work.
- You reviewed your code and removed debug logs or leftover code.
- The GitHub issue is assigned to you.
- You included the related issue number in the PR description (e.g.
Fixes #123
). - All user-facing text uses the translation function
t('key')
; no hardcoded strings. - You avoided hardcoded URLs, config values, or sensitive data.
- You used the shared theme for any styling — no magic numbers or inline styles.
- The pull request addresses only one issue or topic.
- You added screenshots or a video for any UI-related changes.
- Your code passes linting and has no TypeScript errors.
If one or more of these are missing, we may ask you to update your pull request before we can merge it.
- Code contributions should go to the
develop
branch. master
is used for stable releases.- Use descriptive branch names, like
fix/login-error
orfeat/add-alerts
.
Thanks for making Checkmate better. We mean it. Whether it’s your first pull request or your 50th, we’re excited to build with you.
PS: feel free to introduce yourself on Discord and say hi.
-- Checkmate team