mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-09-30 11:12:35 +02:00
225 lines
4.4 KiB
Markdown
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!
|