First off, thanks for considering contributing to this project!
Your ideas, time, and effort help make it better for everyone. 🌱
We welcome all kinds of contributions: code, design, documentation, bug reports, feature ideas, and feedback.
This guide explains how you can get involved.
You don’t need to write code to make a valuable contribution! Here are some great ways:
- Development – Fix bugs, add features, or refactor code.
- Testing & Bug Reports – Try the app on different devices and report any issues.
- Translations – Help make the project available in more languages.
- Design & UI Feedback – Suggest layout, accessibility, or UX improvements.
- Feature Requests – Share your ideas for improvements by opening a feature request.
- Community Support – Answer questions in issues and help others get started.
When submitting a PR:
- Create a branch from
main:git checkout -b <type>/<short-description> # examples: feature/i18n, fix/typo, i18n/fr-french
- Keep commits small and meaningful.
- Ensure the app builds and passes linting/tests.
- Update docs (README, CHANGELOG) if you changed behavior or added features.
- Open the PR and describe what you changed and why.
If your PR affects:
- user-visible behavior
- updater logic
- security, scanning, or quarantine
- translations or UI text
Please mention whether it should be included in the next release. Small improvements and cleanup PRs are welcome, perfection is not required!
- My changes work locally (
npm run dev). - I’ve updated documentation/screenshots if needed.
- I’ve tested on multiple browsers/devices.
- My commit messages are clear and signed (
git commit -s -m "your message").
We recommend following the Conventional Commits format:
feat:for new featuresfix:for bug fixesdocs:for documentationrefactor:for code improvementschore:for maintenance
Example:
refactor: Improved the Antivirus UI
Important
Before Development, make sure you've installed and updated Rust
- Check for Rust updates by using
rustup update - Install The Tauri CLI globally (Optional but Recommended)
npm install -g @tauri-apps/cli
If the build fails, make sure you also have required platform dependencies (like Visual Studio Build Tools on Windows, libwebkit2gtk on Linux, or Xcode on macOS).
- Fork the repository and clone your fork:
git clone https://github.com/ArsenTech/clamav-gui.git cd clamav-gui - Install dependencies:
npm install
- Run the development server:
npm run tauri dev
- Wait until
rustupcompiles the dependencies, and the window will appear.
PRs are reviewed with kindness and calmness :-)
Before submitting a PR:
- Test light and dark mode.
- Verify responsiveness and accessibility on desktop.
- Ensure existing features (like main scan, quarantine page, firewall), new features, and improvements work correctly.
- Make sure there are no console errors and no linting issues.
If your changes affect the updater, release notes, or update flow, please test update checking locally and mention it in the PR.
Note
- All translations are stored in the
public/locales/folder. - Each language has its own JSON file (e.g.
public/locales/hy/translation.jsonfor Armenian). - Keep placeholders like {{string}}, {{number}} intact.
- Use the following to escape characters:
- Forward Slash -
\\ - Double Quotes -
\"
- Forward Slash -
- If unsure about a term, open a draft PR. Maintainers will help!
- Download base language files from here
- Translate all strings with your preferred tool.
- Save it as
[lang-code]/[ns].json(e.g.fr/translations.json,el/scan.json,tr/quarantine.json). - Add your files to the
public/locales/folder. - Add the language entry in
src/i18n/config.ts.export const languageOptions: languageOption[] = [ // All Existing Languages + { language: "<native-name> (example: Español)", code: "<lang-code> (example: es)", countryCode: "<country-code> (example: mx)"}, // ^ This will be your contribution :-) ]; // ... export const dateFnsLanguages: Record<LangCode,DateFnsLocale.Locale> = { // All Existing Languages + <lang-code>: DateFnsLocale.<lang-code> // ^ This will also be your contribution :-) }
- Open
src-tauri/assets/i18n/[lang-code].jsonand Translate the System tray using your preferred tool to finish the i18n support.- Base Language -
/src-tauri/assets/i18n/en.json
- Base Language -
- Make sure to give yourself a credit.
Examples in other Languages:
- 🇷🇺 Russian:
Перевод на Русском: ArsenTech - https://github.com/ArsenTech - 🇦🇲 Armenian:
Թարգմանությունը՝ ArsenTech-ի - https://github.com/ArsenTechMake sure the credit for the translation is unique :-)
- 🇷🇺 Russian:
- Test by switching to your new language and tweaking some translations.
- Submit a PR for review!
Once it's complete, your i18n contribution will be live!
We love new ideas! If you have a suggestion:
- Check existing issues
- If it’s new, open a feature request.
- Explain the motivation and the desired implementation. (The Feature request template says it all
☺️ )
We aim to keep this space welcoming and peaceful:
- Be respectful and constructive.
- Focus on ideas, not individuals.
- Keep discussions inclusive and on-topic.
- Remember: behind every contribution is a person.
| ✅ Do | ❌ Don’t |
|---|---|
| Follow branch naming convention | Edit README for no reason |
| Test before submitting | Submit broken builds |
| Use clear commit messages | Spam “fix typo” PRs |
| Respect code owner reviews | Bypass linting |
See our Code of Conduct for more.
Contributors are what make this project thrive. Your time, ideas, and creativity are truly appreciated.
Take a deep breath, enjoy the process — and let’s make something beautiful together ✨
Thanks for making ArsenTech's ClamAV GUI better!
GitHub @ArsenTech · YouTube @ArsenTech · Patreon ArsenTech · ArsenTech's Website