Files
gh-christianlouis-dmarq/docs/development/contributing.md
T

229 lines
5.0 KiB
Markdown

# Contributing to DMARQ
Thank you for your interest in contributing to DMARQ! This guide will help you get started with the development process.
## Code of Conduct
Please read and follow our [Code of Conduct](https://github.com/yourusername/dmarq/blob/main/CODE_OF_CONDUCT.md) to keep our community approachable and respectable.
## How to Contribute
There are many ways to contribute to DMARQ:
- **Reporting bugs**: Submit detailed bug reports to help us improve
- **Suggesting features**: Propose new features or improvements
- **Writing code**: Contribute code changes or new features
- **Improving docs**: Help make our documentation more comprehensive
- **Translation**: Help translate the interface into other languages
## Development Environment Setup
### Prerequisites
- Python 3.9+
- Node.js 16+ (for frontend assets)
- Docker and Docker Compose (recommended)
- Git
### Setting Up the Project
1. **Fork the repository**
Start by forking the [DMARQ repository](https://github.com/yourusername/dmarq) on GitHub.
2. **Clone your fork**
```bash
git clone https://github.com/YOUR-USERNAME/dmarq.git
cd dmarq
```
3. **Set up the development environment**
Using Docker (recommended):
```bash
docker-compose -f docker-compose.dev.yml up
```
Or manually:
```bash
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
cd backend
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Set up the database
cd app
python -m alembic upgrade head
# Start the development server
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
4. **Frontend Assets (if modifying)**
If you're modifying frontend assets:
```bash
cd backend/app/static
npm install
npm run dev
```
## Making Changes
### Branching Strategy
We follow a simple branching strategy:
- `main` branch is the stable release branch
- `develop` branch is for development work
- Feature branches should be created from `develop`
### Creating a Branch
Create a new branch for your changes:
```bash
git checkout develop
git pull origin develop
git checkout -b feature/your-feature-name
```
Use prefixes like:
- `feature/` for new features
- `bugfix/` for bug fixes
- `docs/` for documentation changes
- `test/` for test improvements
### Coding Standards
We follow these standards:
- **Python**: [PEP 8](https://www.python.org/dev/peps/pep-0008/) style guide
- **JavaScript**: ESLint with Airbnb style
- **HTML/CSS**: Follow the project's existing patterns
We use pre-commit hooks to enforce coding standards:
```bash
pip install pre-commit
pre-commit install
```
### Testing
All code changes should include tests:
```bash
# Run the test suite
cd backend
pytest
# With coverage
pytest --cov=app
```
## Submitting a Pull Request
1. **Update your branch**
```bash
git fetch origin
git rebase origin/develop
```
2. **Run tests**
Ensure all tests pass before submitting:
```bash
pytest
```
3. **Commit your changes**
Follow the [Conventional Commits](https://www.conventionalcommits.org/) standard:
```bash
git commit -m "feat: add user authentication"
```
4. **Push to your fork**
```bash
git push origin feature/your-feature-name
```
5. **Submit a pull request**
Go to the [DMARQ repository](https://github.com/yourusername/dmarq) and create a pull request from your branch to the `develop` branch.
Include in your PR description:
- What changes you've made
- Why you've made these changes
- Any relevant issue numbers (e.g., "Fixes #123")
- Screenshots if applicable
6. **Code review**
Maintainers will review your code. You might need to make additional changes based on feedback.
## Pull Request Review Process
Pull requests are reviewed by maintainers who will check:
1. Code quality and style
2. Test coverage
3. Documentation
4. Overall fit with the project goals
## Release Process
We use semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR version for incompatible API changes
- MINOR version for new functionality in a backwards compatible manner
- PATCH version for backwards compatible bug fixes
## Documentation
Please update documentation alongside code changes:
- Update relevant parts of this documentation site
- Add or update docstrings
- Update README.md if needed
To build and preview the documentation:
```bash
# Install mkdocs and requirements
pip install -r docs/readthedocs/requirements.txt
# Serve documentation locally
mkdocs serve
```
## Additional Resources
- [Project Architecture](../reference/architecture.md)
- [Database Schema](../reference/database.md)
- [API Reference](../reference/api.md)
## Getting Help
If you need help with your contribution, you can:
- Open an issue on GitHub
- Join our community channels
- Email the maintainers at maintainers@example.com
## Recognition
All contributors are recognized in our [CONTRIBUTORS.md](https://github.com/yourusername/dmarq/blob/main/CONTRIBUTORS.md) file. We appreciate your help in making DMARQ better!