Files
bambuddy/CONTRIBUTING.md
T
maziggy ac6cbd757a - Added
- .github/FUNDING.yml
  - CODE_OF_CONDUCT.md
  - CONTRIBUTING.md
  - SECURITY.md
2025-12-30 10:58:34 +01:00

225 lines
4.4 KiB
Markdown

# Contributing to Bambuddy
Thank you for your interest in contributing to Bambuddy! This document provides guidelines and instructions for contributing.
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Getting Started](#getting-started)
- [Development Setup](#development-setup)
- [Making Changes](#making-changes)
- [Code Style](#code-style)
- [Testing](#testing)
- [Submitting Changes](#submitting-changes)
- [Reporting Bugs](#reporting-bugs)
- [Requesting Features](#requesting-features)
## Code of Conduct
Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md) to keep our community welcoming and respectful.
## Getting Started
1. **Fork the repository** on GitHub
2. **Clone your fork** locally:
```bash
git clone https://github.com/YOUR_USERNAME/bambuddy.git
cd bambuddy
```
3. **Add the upstream remote**:
```bash
git remote add upstream https://github.com/maziggy/bambuddy.git
```
## Development Setup
### Prerequisites
- Python 3.10+ (3.11/3.12 recommended)
- Node.js 18+
- npm or yarn
### Backend Setup
```bash
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install pre-commit hooks
pip install pre-commit
pre-commit install
# Run backend
DEBUG=true uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000
```
### Frontend Setup
```bash
cd frontend
# Install dependencies
npm install
# Run development server
npm run dev
```
The frontend will be available at `http://localhost:5173` and will proxy API requests to the backend.
### Running with Docker
```bash
docker compose up -d --build
```
## Making Changes
1. **Create a branch** for your changes:
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
```
2. **Make your changes** following our code style guidelines
3. **Test your changes** thoroughly
4. **Commit your changes** with clear, descriptive messages:
```bash
git commit -m "Add feature: description of what you added"
```
### Branch Naming
- `feature/` - New features
- `fix/` - Bug fixes
- `docs/` - Documentation changes
- `refactor/` - Code refactoring
- `test/` - Test additions or fixes
## Code Style
### Backend (Python)
We use [Ruff](https://github.com/astral-sh/ruff) for linting and formatting:
```bash
# Check linting
ruff check .
# Auto-fix issues
ruff check --fix .
# Format code
ruff format .
```
### Frontend (TypeScript/React)
We use ESLint and Prettier:
```bash
cd frontend
# Lint
npm run lint
# Type check
npm run type-check
```
### Pre-commit Hooks
Pre-commit hooks run automatically on `git commit`. To run manually:
```bash
pre-commit run --all-files
```
## Testing
### Backend Tests
```bash
# Run all tests
pytest
# Run with coverage
pytest --cov=backend
# Run specific test file
pytest backend/app/tests/test_example.py
```
### Frontend Tests
```bash
cd frontend
# Run tests
npm test
# Run with coverage
npm run test:coverage
```
## Submitting Changes
1. **Push your branch** to your fork:
```bash
git push origin feature/your-feature-name
```
2. **Create a Pull Request** on GitHub:
- Use a clear, descriptive title
- Fill out the PR template completely
- Link any related issues
- Include screenshots for UI changes
3. **Wait for review** - maintainers will review your PR and may request changes
### PR Guidelines
- Keep PRs focused and reasonably sized
- One feature or fix per PR
- Update documentation if needed
- Add tests for new functionality
- Ensure all tests pass
- Follow the existing code style
## Reporting Bugs
Use the [Bug Report template](https://github.com/maziggy/bambuddy/issues/new?template=bug_report.yml) and include:
- Clear description of the bug
- Steps to reproduce
- Expected vs actual behavior
- Your environment (OS, Python version, browser)
- Printer model and firmware version
- Relevant logs
## Requesting Features
Use the [Feature Request template](https://github.com/maziggy/bambuddy/issues/new?template=feature_request.yml) and include:
- Clear description of the feature
- Use case / problem it solves
- Proposed solution
- Alternatives considered
## Questions?
- Check the [Documentation](http://wiki.bambuddy.cool)
- Open a [Discussion](https://github.com/maziggy/bambuddy/discussions)
- Review existing [Issues](https://github.com/maziggy/bambuddy/issues)
---
Thank you for contributing to Bambuddy!