2025-11-13 15:16:00 +01:00
|
|
|
name: sf_app_platform_mono_repo
|
|
|
|
|
description: Monorepo for sf app platform, packages and modules included.
|
|
|
|
|
publish_to: "none"
|
2025-11-03 09:23:17 +01:00
|
|
|
|
|
|
|
|
environment:
|
2026-04-06 23:08:51 +02:00
|
|
|
sdk: ">=3.6.0 <4.0.0"
|
|
|
|
|
|
|
|
|
|
workspace:
|
|
|
|
|
- apps/mobile_app
|
|
|
|
|
- modules/splash
|
|
|
|
|
- modules/payment/modules/activity
|
|
|
|
|
- modules/payment/modules/auth
|
|
|
|
|
- modules/payment/modules/dashboard_shell
|
|
|
|
|
- modules/payment/modules/home
|
|
|
|
|
- modules/payment/modules/notifications
|
|
|
|
|
- modules/payment/modules/profile
|
|
|
|
|
- modules/legacy
|
|
|
|
|
- modules/legacy/modules/account
|
|
|
|
|
- modules/legacy/modules/control_panel
|
|
|
|
|
- modules/legacy/modules/customer_service
|
|
|
|
|
- modules/legacy/modules/device_management
|
|
|
|
|
- modules/legacy/modules/legacy_auth
|
|
|
|
|
- modules/legacy/modules/legacy_dashboard_shell
|
|
|
|
|
- modules/legacy/modules/location
|
|
|
|
|
- modules/legacy/modules/settings
|
2026-04-19 01:55:11 +02:00
|
|
|
- modules/legacy/packages/legacy_device_state
|
refactor(legacy): migrate theming to Material 3 + SfColors extension
Replace the ThemePort/ThemeCode abstraction (GetIt-registered adapter)
with a Riverpod-driven Material 3 ColorScheme, an SfColors ThemeExtension
for brand tokens, and a user-facing appearance selector for light/dark/
system modes. Persisted via SharedPreferences, reacts to system
brightness changes. Payments mode keeps the existing ThemePort API.
Highlights
- New legacy_theme package: LegacyAppTheme (light/dark), LegacyColorSchemes,
SfColors ThemeExtension, LegacyThemePreferences, LegacyThemeNotifier,
LegacyThemeSelector. Timeframe-based variants scaffolded but disabled.
- New /legacy/dashboard/control_panel/settings/appearance route + screen.
- MaterialApp.router picks the legacy theme only when isLegacyMode.
- ~90 ThemeCode.* usages migrated to colorScheme.* / context.sfColors.*.
- 25 widgets dropped the 'ThemePort theme' constructor param.
- ~145 hardcoded colors migrated (exact hex 1:1, grey.shade tiers,
destructive red -> colorScheme.error, background whites -> surface).
Content-over-color whites, transparents, and brand semantic reds/
oranges/greens intentionally preserved.
- sf_localizations updated with appearance / appearanceDescription keys
in all six locales.
2026-04-19 04:47:22 +02:00
|
|
|
- modules/legacy/packages/legacy_theme
|
refactor(legacy): split legacy_shared into cohesive packages
legacy_shared was the junk drawer of the legacy app mode — 37 files
mixing device entities, command infrastructure, UI primitives, generic
formatters, and a duplicate of sf_infrastructure's dio_error_mapper.
Any module needing one piece pulled the whole bag into its graph.
Split it by responsibility, following Mandamiento 4 of Real-World Flutter:
- legacy_ui (new): 6 widget/layout primitives (PageLayout, MenuButton,
SectionButton, PulsingLocationMarker, RefreshableErrorState,
WeekDayChips) plus mapStyleProvider — shared UI state that was the
only reason two modules needed a common package.
- legacy_device_state (expanded 9 → 30): absorbed device entities,
commands infrastructure (datasource + repo + provider + guard),
device settings update flow, and the CSV exporter. Now one package
owns the device domain end-to-end.
- packages/utils: absorbed battery_utils and date_format_utils as pure
formatters that never belonged in a legacy-scoped package.
- legacy_shared: deleted entirely.
The duplicate dio_error_mapper in legacy_shared is gone; callers now use
the sf_infrastructure version (which was always the superset — it adds
ApiException and the dart:io socket handling).
DeviceEntity note: legacy_device_state keeps its own DeviceEntity (with
int timestamps and typed paymentOptions) separate from sf_shared's
DeviceEntity (String timestamps, untyped paymentOptions). The legacy
one is intentionally not exported from the barrel to avoid the
ambiguous_import collision that legacy_shared quietly hid by never
exporting it in the first place. Unifying the two is a domain-model
refactor out of scope here.
0 cross-module imports remain among legacy feature modules.
2026-04-19 05:42:31 +02:00
|
|
|
- modules/legacy/packages/legacy_ui
|
2026-04-06 23:08:51 +02:00
|
|
|
- packages/design_system
|
|
|
|
|
- packages/flutter_treezor_entrust_sdk_bridge
|
2026-04-15 11:25:06 +02:00
|
|
|
- packages/flutter_treezor_entrust_sdk_bridge/example
|
2026-04-06 23:08:51 +02:00
|
|
|
- packages/fonts
|
|
|
|
|
- packages/navigation
|
|
|
|
|
- packages/payments
|
|
|
|
|
- packages/sca_treezor
|
|
|
|
|
- packages/sf_infrastructure
|
|
|
|
|
- packages/sf_localizations
|
|
|
|
|
- packages/sf_shared
|
2026-04-07 13:47:07 +02:00
|
|
|
- packages/sf_tracking
|
2026-04-06 23:08:51 +02:00
|
|
|
- packages/utils
|
2026-04-16 17:45:33 +02:00
|
|
|
- packages/videocall_sdk
|
2026-04-06 23:08:51 +02:00
|
|
|
|
2025-11-13 15:16:00 +01:00
|
|
|
dependencies:
|
|
|
|
|
flutter_secure_storage: ^9.2.4
|
2026-04-06 23:08:51 +02:00
|
|
|
|
|
|
|
|
dev_dependencies:
|
|
|
|
|
melos: ^7.5.1
|
|
|
|
|
|
2025-11-13 15:16:00 +01:00
|
|
|
dependency_overrides:
|
2026-04-06 23:08:51 +02:00
|
|
|
flutter_secure_storage: 9.2.4
|
|
|
|
|
|
|
|
|
|
melos:
|
|
|
|
|
name: sf-app-platform
|
|
|
|
|
scripts:
|
|
|
|
|
analyze:
|
|
|
|
|
description: Run flutter analyze across all packages
|
|
|
|
|
exec: flutter analyze .
|
|
|
|
|
|
|
|
|
|
test:
|
|
|
|
|
description: Run all tests in packages that have a test directory
|
|
|
|
|
exec: flutter test
|
|
|
|
|
packageFilters:
|
|
|
|
|
dirExists: test
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
description: Clean .dart_tool and build directories in all packages
|
|
|
|
|
exec: flutter clean
|
|
|
|
|
|
|
|
|
|
generate:
|
|
|
|
|
description: Run build_runner in packages that depend on build_runner
|
|
|
|
|
exec: dart run build_runner build --delete-conflicting-outputs
|
|
|
|
|
packageFilters:
|
|
|
|
|
dependsOn: build_runner
|
|
|
|
|
|
|
|
|
|
format:
|
|
|
|
|
description: Format all Dart code
|
|
|
|
|
exec: dart format .
|
|
|
|
|
|
|
|
|
|
format:check:
|
|
|
|
|
description: Check formatting without making changes (CI-friendly)
|
|
|
|
|
exec: dart format --set-exit-if-changed --output=none .
|
|
|
|
|
|
|
|
|
|
outdated:
|
|
|
|
|
description: Show outdated dependencies in all packages
|
|
|
|
|
exec: flutter pub outdated
|
|
|
|
|
|
|
|
|
|
sync-deps:
|
|
|
|
|
description: Propagate versions from dependencies.yaml to all pubspec.yaml
|
|
|
|
|
run: dart run tool/sync_deps.dart sync
|
|
|
|
|
|
|
|
|
|
check-deps:
|
|
|
|
|
description: Verify all pubspec.yaml are in sync with dependencies.yaml (CI-friendly)
|
|
|
|
|
run: dart run tool/sync_deps.dart check
|
|
|
|
|
|
|
|
|
|
app:dev:
|
|
|
|
|
description: Launch the app in development flavor
|
|
|
|
|
run: cd apps/mobile_app && flutter run -t lib/main_development.dart --dart-define-from-file=config/development.json
|
|
|
|
|
|
|
|
|
|
app:staging:
|
|
|
|
|
description: Launch the app in staging flavor
|
|
|
|
|
run: cd apps/mobile_app && flutter run -t lib/main_staging.dart --dart-define-from-file=config/staging.json
|
|
|
|
|
|
|
|
|
|
app:prod:
|
|
|
|
|
description: Launch the app in production flavor
|
|
|
|
|
run: cd apps/mobile_app && flutter run -t lib/main_production.dart --dart-define-from-file=config/production.json
|
|
|
|
|
|