Added contribution guidelines doc (#788)
* added contribution guidelines doc * Update packages/web/CONTRIBUTIONS.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
# 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](https://meshtastic.org/docs/legal/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.
|
||||
|
||||
[Meshtastic Web](https://github.com/meshtastic/web/)
|
||||
|
||||
### Prerequisites
|
||||
- [Node.js](https://nodejs.org/) (v22 or later)
|
||||
- [pnpm](https://pnpm.io/) (v10.14.x or later)
|
||||
- Git
|
||||
|
||||
### Installation
|
||||
Clone the repo and install dependencies:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/meshtastic/web.git meshtastic-web
|
||||
cd meshtastic-web
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### Development
|
||||
Start the development server:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
1. **Fork the repo** and create your branch from `main`.
|
||||
|
||||
### Branch Naming
|
||||
- Use [Conventional Commit](https://www.conventionalcommits.org/) style for your branch names:
|
||||
```
|
||||
feat/add-project-filter
|
||||
fix/storage-service
|
||||
chore/update-ci-cache
|
||||
```
|
||||
|
||||
2. **Make your changes locally** and verify that the app runs as expected at `http://localhost:3000`.
|
||||
|
||||
3. **Commit your changes** with a descriptive commit message that follows the [Conventional Commits](https://www.conventionalcommits.org/) style.
|
||||
|
||||
4. **Open a Pull Request (PR)** from your fork's branch to the main repository's `main` branch 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.
|
||||
|
||||
5. **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.json`** file.
|
||||
- Do **not** hardcode English strings directly in components.
|
||||
- This ensures they can be translated into other languages.
|
||||
|
||||
🔗 See these guides for more details:
|
||||
- [i18n Developer Guide](https://github.com/meshtastic/web/blob/main/packages/web/CONTRIBUTING_I18N_DEVELOPER_GUIDE.md)
|
||||
- [Translation Contribution Guide](https://github.com/meshtastic/web/blob/main/packages/web/CONTRIBUTING_TRANSLATIONS.md)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing
|
||||
Tests are written with [Vitest](https://vitest.dev/).
|
||||
|
||||
Run all tests locally with:
|
||||
|
||||
```bash
|
||||
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 feature
|
||||
- `fix:` – a bug fix
|
||||
- `docs:` – documentation changes
|
||||
- `chore:` – maintenance, dependencies, build scripts
|
||||
- `refactor:` – code restructuring without feature changes
|
||||
- `test:` – adding or updating tests
|
||||
- `ci:` – 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](https://discord.gg/meshtastic) before starting work.
|
||||
- If unsure, open a draft PR for early feedback.
|
||||
|
||||
---
|
||||
|
||||
## 🙌 Community
|
||||
Contributors are the heart of Meshtastic ❤️.
|
||||
Join the conversation:
|
||||
- [Discord](https://discord.gg/meshtastic)
|
||||
- [GitHub Discussions](https://github.com/meshtastic/web/discussions)
|
||||
|
||||
---
|
||||
|
||||
## 📜 License
|
||||
By contributing, you agree that your contributions will be licensed under the [GPL-3.0-only License](../../LICENSE).
|
||||
Reference in New Issue
Block a user