Thank you for your interest in contributing to flutree! All contributions are welcome. Please read the following guidelines to get started.
- Go
>=1.22 - Git available in
PATH - Access to a Flutter project for testing (optional)
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/flutree.git - Navigate to the project directory:
cd flutree - Install dependencies:
go mod download - Build the project:
go build -o flutree ./cmd/flutree
cmd/flutree/ # CLI entry point
internal/
app/ # Application services and business logic
domain/ # Domain models and interfaces
infra/ # Infrastructure implementations (git, registry, etc.)
runtime/ # Runtime utilities
ui/ # User interface components (using Bubble Tea)
docs/ # Documentation
integration/ # Integration tests
scripts/ # Build and release scripts
# Run all tests
go test ./...
# Run tests with coverage
go test ./... -cover
# Run tests with verbose output
go test -v ./...- Place unit tests alongside the code they test (e.g.,
create_service_test.goforcreate_service.go) - Use table-driven tests where appropriate
- Maintain high test coverage, especially for critical business logic
- Write integration tests for complex workflows in the
integration/directory
- Ensure all tests pass
- Update documentation as needed
- Add tests for new features
- Follow the style guides below
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests if applicable
- Run the full test suite
- Update documentation
- Commit your changes using conventional commits
- Push to your fork
- Open a pull request to the
mainbranch
When creating your pull request, please include:
- A clear description of the changes
- The problem being solved (if applicable)
- How you tested the changes
- Any breaking changes (if applicable)
- Follow Effective Go guidelines
- Use
gofmtto format your code - Write clear, idiomatic Go code
- Document exported functions, types, and packages
- Use Conventional Commits
- Keep commits focused and atomic
- Write clear, imperative commit messages
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Common types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: A code change that neither fixes a bug nor adds a featuretest: Adding missing tests or correcting existing testschore: Other changes that don't modify src or test files
- Use Markdown for documentation
- Keep examples up-to-date
- Explain the "why" not just the "what"
- Open an issue for bugs or feature requests
- For questions, create an issue with the "question" label
- Be respectful and constructive in all interactions
When reporting issues, please include:
- Steps to reproduce the problem
- Expected behavior
- Actual behavior
- Environment details (OS, Go version, etc.)
- Any relevant screenshots or logs
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
If you have any questions about contributing, feel free to open an issue with the "question" label.