From a4c817cd304711d3aa58ead27e5e0547b2557493 Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Sun, 17 Aug 2025 14:32:10 -0400 Subject: [PATCH] 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> --- packages/web/CONTRIBUTIONS.md | 150 ++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 packages/web/CONTRIBUTIONS.md diff --git a/packages/web/CONTRIBUTIONS.md b/packages/web/CONTRIBUTIONS.md new file mode 100644 index 00000000..64dd2be5 --- /dev/null +++ b/packages/web/CONTRIBUTIONS.md @@ -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).