lib/holds app code:core/for shared services,features/for UI flows,hive/for adapters, and entry points inmain.dart,main_development.dart, andclassipod_app.dart.- Platform scaffolding lives in
android/,ios/,linux/,macos/,windows/, andweb/; assets and fonts sit inassets/; automation scripts live infastlane/andscripts/. - Tests mirror production code under
test/unit_tests/andtest/widget_tests/, with reusable fixtures intest/test_files/and caches intest/cache/.
flutter pub get --suppress-analyticsrefreshes dependencies after anypubspec.yamlchange.flutter pub run build_runner build --delete-conflicting-outputsregenerates Hive TypeAdapters before building.flutter gen-l10nkeepslib/l10n/synced withl10n.yaml.flutter analyze --suppress-analyticsordart run custom_lintmust be clean prior to committing.- Format with
flutter format --set-exit-if-changed lib/ test/. flutter test --no-pub --coverage --suppress-analyticsis the required test invocation; uploadcoverage/lcov.infowhen CI or reviewers ask.- Release builds are standardized through Fastlane, e.g.
bundle exec fastlane build_flutter_app type:apk(swapipa,appbundle, etc. as needed).
- Respect
analysis_options.yaml: declare return types, preferconst, keep package imports absolute, and stay ≤80 columns. - Use
snake_case.dartfilenames,UpperCamelCasefor classes, and suffix Riverpod notifiers/controllers (PlaybackController,LibraryNotifier) insidelib/features/. - Factor reusable UI into
lib/core/widgets/, include trailing commas, and avoid relative imports (../) entirely.
- Store pure logic specs in
test/unit_tests/and widget scenarios intest/widget_tests/, mirroring the folder layout underlib/features/. - Name every file
_test.dart, group cases by behavior (group('cover_flow', ...)), and prefer golden tests for UI regressions. - Maintain coverage by extending suites whenever playback, persistence, or routing code changes; reuse fixtures from
test/test_files/instead of adding new binaries.
- Match the existing history with emoji-prefixed, present-tense commits such as
🐛 fix thumbnail pathor✨ add coverflow filter, referencing issues (fixes #51) when applicable. - Complete the checklist in
pull_request_template.md, note platform verification (Android/Windows/Web), and include before/after screenshots for UI work. - Summarize any Fastlane or build-runner commands you ran so reviewers can reproduce the environment.
- Keep store credentials and service accounts outside the repo; point Fastlane to them via environment variables like
GOOGLE_SERVICE_ACCOUNT_JSON_PATH. - When bumping dependencies or assets, cross-check platform builds and update
CHANGELOG.mdalongside the code change.