lib/: Flutter/Dart source (client, protocol, media, UI, providers).native/moq_quic/: Rust QUIC library used via FFI.test/: Dart unit tests (protocol serialization lives intest/moq/protocol/).scripts/andtool/: build helpers for native components.- Platform folders (
android/,ios/,macos/,linux/,windows/,web/): Flutter host projects. docs/: reference specs and drafts.
flutter pub get: install Dart/Flutter dependencies.flutter run: run the app; triggers native Rust build hooks.flutter build <platform>: produce platform artifacts (e.g.,apk,ios,macos,linux,windows).flutter test: run all Dart tests.flutter analyze: run static analysis withflutter_lints.cd native/moq_quic && cargo build --release: build the Rust library manually.scripts/build_native.sh(Linux/macOS/iOS) orscripts/build_native.bat(Windows): manual native builds.
- Follow standard Dart style (2-space indentation, trailing commas for auto-formatting).
- Keep Dart files lower_snake_case (e.g.,
moq_messages_data.dart). - Use
flutter_lintsviaanalysis_options.yaml; avoid disabling lints unless justified. - Prefer Riverpod conventions for providers (see
lib/providers/).
- Primary framework:
flutter_test. - Place new tests under
test/and mirrorlib/paths when possible. - Naming:
<feature>_test.dart(e.g.,wire_format_test.dart). - Run targeted tests with
flutter test test/moq/protocol/wire_format_test.dart.
- Commit subjects are short, imperative, and sentence case (e.g., “Add replay buffer…”).
- Keep commits focused; mention protocol or platform impact in the body if needed.
- PRs should include: summary, testing performed, and screenshots for UI changes.
- Rust builds are wired into Flutter via
tool/build_rust.dartand platform build hooks. - Specs and protocol notes live in
docs/for reference when touching protocol code.