Thank you for your interest in contributing to Bambuddy! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Code Style
- Testing
- Submitting Changes
- Reporting Bugs
- Requesting Features
Please read and follow our Code of Conduct to keep our community welcoming and respectful.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/bambuddy.git cd bambuddy - Add the upstream remote:
git remote add upstream https://github.com/maziggy/bambuddy.git
- Python 3.10+ (3.11/3.12 recommended)
- Node.js 18+
- npm or yarn
# 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 8000cd frontend
# Install dependencies
npm install
# Run development server
npm run devThe frontend will be available at http://localhost:5173 and will proxy API requests to the backend.
docker compose up -d --build-
Create a branch for your changes:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make your changes following our code style guidelines
-
Test your changes thoroughly
-
Commit your changes with clear, descriptive messages:
git commit -m "Add feature: description of what you added"
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoringtest/- Test additions or fixes
We use Ruff for linting and formatting:
# Check linting
ruff check .
# Auto-fix issues
ruff check --fix .
# Format code
ruff format .We use ESLint and Prettier:
cd frontend
# Lint
npm run lint
# Type check
npm run type-checkPre-commit hooks run automatically on git commit. To run manually:
pre-commit run --all-files# Run all tests
pytest
# Run with coverage
pytest --cov=backend
# Run specific test file
pytest backend/app/tests/test_example.pycd frontend
# Run tests
npm test
# Run with coverage
npm run test:coverage-
Push your branch to your fork:
git push origin feature/your-feature-name
-
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
-
Wait for review - maintainers will review your PR and may request changes
- 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
Use the Bug Report template 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
Use the Feature Request template and include:
- Clear description of the feature
- Use case / problem it solves
- Proposed solution
- Alternatives considered
- Check the Documentation
- Open a Discussion
- Review existing Issues
Thank you for contributing to Bambuddy!