Contributing¶
Contributions to Cloudrift are welcome! This guide covers the process for submitting changes.
Getting Started¶
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment (see Local Setup)
- Create a feature branch from
main
Development Workflow¶
- Make your changes on the feature branch
- Run analysis to check for issues:
- Run tests:
- Commit with a descriptive message:
- Push and open a Pull Request against
main
Code Standards¶
Dart / Flutter¶
- Follow the Dart style guide
- Use
flutter_lintsrules (configured inanalysis_options.yaml) - Run
flutter analyzebefore committing — zero issues required - Use
AppColorsconstants, never hardcode color values - Use
ConsumerWidgetfor screens that access Riverpod providers
Go (API Server)¶
- Follow standard Go formatting (
gofmt) - Keep the API server in a single
main.gofile - Validate all file paths to prevent directory traversal
- Return errors in
{"error": "message"}format
Documentation¶
- Documentation uses MkDocs with Material theme
- Markdown files live in
docs/ - Preview locally with
mkdocs serve - Build check with
mkdocs build --strict
Pull Request Process¶
- Ensure
flutter analyzepasses with zero issues - Ensure
flutter testpasses - Update documentation if adding new features or changing behavior
- Keep PRs focused — one feature or fix per PR
- Write a clear PR description explaining what and why
Commit Convention¶
Use clear, descriptive commit messages:
Add compliance framework scoring to dashboard
Fix scan service selector config path switching
Update Docker image to include Terraform 1.7.5
Prefix with the action: Add, Fix, Update, Remove, Refactor.
Project Structure¶
See Project Structure for a guide to the codebase layout.
Reporting Issues¶
Open an issue on GitHub with:
- Steps to reproduce
- Expected vs actual behavior
- Flutter/OS version (
flutter doctoroutput) - Screenshots if applicable
License¶
By contributing, you agree that your contributions will be licensed under the project's MIT License.