Thanks for wanting to contribute. Here's how to get started.
-
Clone the repo:
git clone https://github.com/OttomanDeveloper/tanquery.git cd tanquery -
Install dependencies for all packages:
dart pub get
This is a Dart workspace monorepo. Running
dart pub getat the root resolves dependencies for all three packages. -
(Optional) Install melos for running commands across packages:
dart pub global activate melos
tanquery/
packages/
tanquery/ # Pure Dart core (no Flutter dependency)
tanquery_flutter/ # Flutter widget builders
tanquery_devtools/ # Visual cache inspector overlay
melos.yaml
pubspec.yaml # Workspace root
Run all tests from the root:
dart test packages/tanqueryOr with melos:
melos run testFlutter package tests:
cd packages/tanquery_flutter && flutter test
cd packages/tanquery_devtools && flutter testdart analyze packages/tanquery/lib
dart analyze packages/tanquery_flutter/lib
dart analyze packages/tanquery_devtools/libOr across all packages:
melos run analyze-
Create a branch off
main:git checkout -b feat/my-feature
-
Make your changes. Keep these in mind:
- The core package (
tanquery) must stay pure Dart. No Flutter imports. - Every public API needs a
///dartdoc comment. - Run
dart analyzeanddart testbefore opening a PR. - Match existing code style. No trailing whitespace, no unused imports.
- The core package (
-
If you add or change public API, update the relevant
CHANGELOG.mdunder a new version heading. -
Open a pull request against
main. Describe what you changed and why.
- Use
///doc comments on all public APIs. - Avoid abbreviations in public-facing names (
queryKeynotqk). - Private members use
_prefix. - Prefer
finalfields where possible. - No
dynamicunless unavoidable. - Barrel exports go in the package's top-level
.dartfile (tanquery.dart,tanquery_flutter.dart, etc).
Open an issue at https://github.com/OttomanDeveloper/tanquery/issues with:
- What you expected to happen
- What actually happened
- Minimal reproduction (a code snippet or small project)
- Dart/Flutter SDK version
Open an issue with the "enhancement" label. Explain the use case, not just the solution. What problem are you hitting?
By contributing, you agree that your contributions will be licensed under the MIT License.