4.4 KiB
Contributing to Meshtastic Web
Thank you for your interest in contributing to Meshtastic Web! 🎉
We welcome all contributions—whether it’s fixing a typo, improving documentation, adding new features, or reporting bugs. This document outlines how to get started and the conventions we follow.
📋 Code of Conduct
We follow the Meshtastic Code of Conduct.
Please make sure you are familiar with it before contributing.
🚀 Getting Started
Before making changes, please take some time to explore the repository and its monorepo structure. Understanding how the packages are organized will make it much easier to contribute effectively.
Prerequisites
Installation
Clone the repo and install dependencies:
git clone https://github.com/meshtastic/web.git meshtastic-web
cd meshtastic-web
pnpm install
Development
Start the development server:
pnpm --filter @meshtastic/web dev
Once running, the site will be available at:
👉 http://localhost:3000
🗂 Repository Structure
Meshtastic Web uses a monorepo setup managed with pnpm workspaces:
/packages
├─ web # React frontend
├─ core # Shared types & logic
├─ transport-* # Transport layer packages
└─ ...other packages
✅ Contribution Workflow
-
Fork the repo and create your branch from
main.Branch Naming
- Use Conventional Commit style for your branch names:
feat/add-project-filter fix/storage-service chore/update-ci-cache
- Use Conventional Commit style for your branch names:
-
Make your changes locally and verify that the app runs as expected at
http://localhost:3000. -
Commit your changes with a descriptive commit message that follows the Conventional Commits style.
-
Open a Pull Request (PR) from your fork's branch to the main repository's
mainbranch on GitHub:- Clearly describe the problem and solution.
- Reference related issues (e.g.,
Fixes #123). - Keep PRs focused on a single feature or fix.
- Complete all fields in the PR template.
- Tag a Meshtastic Web developer in the PR for review.
-
CI/CD:
- Our GitHub Actions workflows handle builds, linting, and packaging automatically.
- All checks must pass before merge.
🌍 Internationalization (i18n)
Meshtastic Web supports multiple languages. If your changes introduce new user-facing strings:
- Add them to the
en.jsonfile. - Do not hardcode English strings directly in components.
- This ensures they can be translated into other languages.
🔗 See these guides for more details:
🧪 Testing
Tests are written with Vitest.
Run all tests locally with:
pnpm --filter @meshtastic/web test
Please include tests for new features and bug fixes whenever possible.
📝 Commit Messages
We use Conventional Commits:
feat:– a new featurefix:– a bug fixdocs:– documentation changeschore:– maintenance, dependencies, build scriptsrefactor:– code restructuring without feature changestest:– adding or updating testsci:– CI/CD changes
Example:
feat: add toast notification system
fix: correct caching issue in storage service
💡 Tips for Contributors
- Keep PRs small, focused, and atomic.
- Discuss larger changes with the team on Discord before starting work.
- If unsure, open a draft PR for early feedback.
🙌 Community
Contributors are the heart of Meshtastic ❤️.
Join the conversation:
📜 License
By contributing, you agree that your contributions will be licensed under the GPL-3.0-only License.