lib/holds app code; features live underlib/features/<feature>/withview,viewmodel,widget, andmodelsfolders following MVVM. Core-wide utilities will eventually sit underlib/core/.test/mirrors the feature layout (test/features/voice_to_text/...) for unit and widget coverage. Keep test helpers close to the code they exercise.- Platform scaffolding resides in the standard
android/,ios/,web/, and desktop directories. Treat these as generated unless platform work is assigned.
flutter pub get— sync dependencies declared inpubspec.yaml.flutter run— launch the app using current configuration; defaults toVoiceToTextScreen.flutter test— execute all unit and widget tests; useflutter test test/features/...for targeted suites.
- Follow Dart style: 2-space indentation,
lowerCamelCasefor variables/methods,UpperCamelCasefor types, andsnake_case.dartfilenames. - Widgets and view models live in dedicated files named after the class (
text_display.dart,voice_to_text_model.dart). - Rely on Flutter’s formatter:
dart format .or the IDE’s auto-format on save. Static analysis is enforced viaanalysis_options.yaml; resolve its warnings before committing.
- Write unit tests for view models and pure logic; use
flutter_testfor widget layout/animation checks (seewaveform_test.dart). - Name tests descriptively using
group+testWidgets/test; prefer arranging inputs/expectations inline for readability. - Ensure new features extend the mirrored directory structure in
test/and runflutter testbefore pushing.
- Use commits conventions fix, tests, chore, feat, build, refactor
- Commits in history use short, imperative messages (
Add waveform visualization). Keep them scoped to a single concern and ensure formatting/lints pass (flutter analyzeruns pre-commit via tooling). - Pull requests should:
- Reference the corresponding GitHub issue in the description (
Fixes #2). - Summarize functional changes plus any architectural notes (e.g., new providers).
- Include screenshots or screen recordings for UI changes when feasible.
- Confirm tests ran successfully (
flutter test) and note any manual verification performed.
- Reference the corresponding GitHub issue in the description (
- The app is converging on MVVM: views consume
VoiceToTextModelState/future providers, while view models expose immutable state and notify listeners. New features should respect this separation and favor dependency injection for services.
- ALWAYS use
ghcli when interacting with github
- Always follow the guidelines layout here