# Contributing to DocFlow

Thank you for your interest in contributing to DocFlow! We welcome contributions from the community to make this project better.

## How to Contribute

1. **Fork the repository** and create your branch from `main`.
2. **Clone your fork** and set up a virtual environment.
3. **Install dependencies** using `pip install -r requirements.txt`.
4. **Create a new branch** for your feature or bugfix:
   ```sh
   git checkout -b my-feature
   ```
5. **Make your changes** and add tests as appropriate.
6. **Run the test suite** to ensure nothing is broken:
   ```sh
   pytest
   ```
7. **Commit your changes** and push your branch to GitHub.
8. **Open a Pull Request** with a clear description of your changes.

## Code Style

- Follow [PEP8](https://www.python.org/dev/peps/pep-0008/) for Python code style.
- Use type hints where possible.
- Write clear, concise docstrings for all public classes and methods.
- Please review design document to understand overall architecture concept, in particular, seperation of concerns with layer implementation. 

## Pull Requests

- Ensure your branch is up to date with `main` before submitting a PR.
- Reference related issues in your PR description.
- Include tests for new features and bugfixes.
- Be responsive to code review feedback.

## Reporting Issues

- Use the [GitHub Issues](https://github.com/tommyGPT2S/DocFlow/issues) page to report bugs or request features.
- Please provide as much detail as possible, including steps to reproduce, logs, and your environment.

## Community

- Be respectful and inclusive in all interactions.
- Help others by reviewing PRs and answering questions.

Thank you for helping make DocFlow better! 