# Contributing to Meshview

First off, thanks for taking the time to contribute! ❤️  
All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for ways to help and details about how this project handles contributions. Please read the relevant section before getting started — it will make things smoother for both you and the maintainers.  

The Meshview community looks forward to your contributions. 🎉

> And if you like the project but don’t have time to contribute code, that’s fine! You can still support Meshview by:  
> - ⭐ Starring the repo on GitHub  
> - Talking about Meshview on social media  
> - Referencing Meshview in your own project’s README  
> - Mentioning Meshview at local meetups or to colleagues/friends  

---

## Table of Contents

- [Code of Conduct](#code-of-conduct)  
- [I Have a Question](#i-have-a-question)  
- [I Want to Contribute](#i-want-to-contribute)  
  - [Reporting Bugs](#reporting-bugs)  
  - [Suggesting Enhancements](#suggesting-enhancements)  
  - [Your First Code Contribution](#your-first-code-contribution)  
  - [Improving the Documentation](#improving-the-documentation)  
- [Styleguides](#styleguides)  
  - [Commit Messages](#commit-messages)  
- [Join the Project Team](#join-the-project-team)  

---

## Code of Conduct

Meshview is an open and welcoming community. We want everyone to feel safe, respected, and valued.

### Our Standards
- Be respectful and considerate in all interactions.  
- Welcome new contributors and help them learn.  
- Provide constructive feedback, not personal attacks.  
- Focus on collaboration and what benefits the community.  

Unacceptable behavior includes harassment, insults, hate speech, personal attacks, or publishing others’ private information without permission.

---

## I Have a Question

> Before asking, please read the [documentation](docs/README.md) if available.  

1. Search the [issues list](../../issues) to see if your question has already been asked.  
2. If not, open a [new issue](../../issues/new) with the **question** label.  
3. Provide as much context as possible (OS, Python version, database type, etc.).  

---

## I Want to Contribute

### Legal Notice
By contributing to Meshview, you agree that:
- You authored the content yourself.  
- You have the necessary rights to the content.  
- Your contribution can be provided under the project’s license.  

---

### Reporting Bugs

Before submitting a bug report:
- Make sure you’re using the latest Meshview version.  
- Verify the issue is not due to a misconfigured environment (SQLite/MySQL, Python version, etc.).  
- Search existing [bug reports](../../issues?q=label%3Abug).  
- Collect relevant information:  
  - Steps to reproduce  
  - Error messages / stack traces  
  - OS, Python version, and database backend  
  - Any logs (`meshview-db.service`, `mqtt_reader.py`, etc.)  

How to report:  
- Open a [new issue](../../issues/new).  
- Use a **clear and descriptive title**.  
- Include reproduction steps and expected vs. actual behavior.  

⚠️ Security issues should **not** be reported in public issues. Instead, email us at **meshview-maintainers@proton.me**.  

---

### Suggesting Enhancements

Enhancements are tracked as [issues](../../issues). Before suggesting:  
- Make sure the feature doesn’t already exist.  
- Search for prior suggestions.  
- Check that it fits Meshview’s scope (mesh packet analysis, visualization, telemetry, etc.).  

When submitting:  
- Use a **clear and descriptive title**.  
- Describe the current behavior and what you’d like to see instead.  
- Include examples, screenshots, or mockups if relevant.  
- Explain why it would be useful to most Meshview users.  

---

### Your First Code Contribution

We love first-time contributors! 🚀

If you’d like to start coding:  
1. Look for issues tagged with [good first issue](../../issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).  
2. Fork the repository and clone it locally.  
3. Set up the development environment:  
4. Run the app locally
5. Create a new branch, make your changes, commit, and push.  
6. Open a pull request!  

---

### Improving the Documentation

Docs are just as important as code. You can help by:  
- Fixing typos or broken links.  
- Clarifying confusing instructions.  
- Adding examples (e.g., setting up Nginx as a reverse proxy, SQLite vs. MySQL setup).  
- Writing or updating tutorials.  

---

## Join the Project Team

Meshview is a community-driven project. If you consistently contribute (code, documentation, or community help), we’d love to invite you as a maintainer.  

Start by contributing regularly, engaging in issues/PRs, and helping others.  

---

✨ That’s it! Thanks again for being part of Meshview. Every contribution matters.  