Files
gps-speedo/.planning/codebase/STACK.md
T
Mikkeli Matlock a686e6b0fb docs: map existing codebase
- STACK.md - Technologies and dependencies
- ARCHITECTURE.md - System design and patterns
- STRUCTURE.md - Directory layout
- CONVENTIONS.md - Code style and patterns
- TESTING.md - Test structure
- INTEGRATIONS.md - External services
- CONCERNS.md - Technical debt and issues
2026-02-09 18:51:11 +09:00

133 lines
4.8 KiB
Markdown

# Technology Stack
**Analysis Date:** 2026-02-09
## Languages
**Primary:**
- Dart 3.9.0+ - Flutter app logic, services, UI widgets
- Kotlin - Android native bridge and plugin implementations
- Swift - iOS native bridge (untested)
**Secondary:**
- XML - Android manifest and resource files
- YAML - Flutter configuration and package management
- XML/Plist - iOS configuration
## Runtime
**Environment:**
- Flutter 3.24.0+ (SDK)
- Android Runtime (API 21+, configured via Gradle)
- iOS Runtime (optional, iOS 12.0+)
**Package Manager:**
- Pub (Dart package manager)
- Lockfile: `pubspec.lock` (present)
- Direct dependencies resolved from `pub.dev`
## Frameworks
**Core:**
- Flutter 0.0.0 - UI framework and cross-platform mobile development
- Material Design 3 - Flutter Material Design components with `useMaterial3: true`
**Testing:**
- Flutter Test SDK - Unit and widget testing framework (included in Flutter SDK)
- flutter_lints 6.0.0 - Linting rules for code quality
**Build/Dev:**
- flutter_launcher_icons 0.14.4 - Icon generation for Android and iOS
- Gradle (Kotlin DSL) - Android build system configured in `android/app/build.gradle.kts`
## Key Dependencies
**Critical:**
- geolocator 14.0.2 - GPS positioning and real-time location streaming with heading/speed data
- Platform-specific implementations: geolocator_android, geolocator_apple, geolocator_linux, geolocator_web, geolocator_windows
- Transitive: geolocator_platform_interface 4.2.6
- permission_handler 12.0.1 - Runtime permissions management (location, overlay window)
- Platform-specific: permission_handler_android, permission_handler_apple, permission_handler_windows, permission_handler_html
**Infrastructure:**
- wakelock_plus 1.3.2 - Keeps device screen/CPU awake during GPS tracking
- Transitive: wakelock_plus_platform_interface 1.2.3
- flutter_overlay_window 0.5.0 - System-level floating window overlay for GPS data display
- Core overlay service: `flutter.overlay.window.flutter_overlay_window.OverlayService`
- bg_launcher 0.1.0 - Brings app to foreground from background or overlay state
**Utilities:**
- http 1.5.0 (transitive) - HTTP client library (included as dependency of other packages)
- package_info_plus 8.3.1 (transitive) - App version and package info
- uuid 4.5.1 (transitive) - UUID generation for identifiers
- meta 1.16.0 (transitive) - Dart language annotations
**Development Utilities:**
- archive 4.0.7 - For launcher icon generation
- image 4.5.4 - Image processing for icons
- json_annotation 4.9.0 - JSON serialization support
## Configuration
**Environment:**
- No `.env` files or environment variable configuration detected
- Configuration is hardcoded in Dart code and managed through SharedPreferences during runtime
- Key runtime settings:
- Speed units (km/h, mph, knots) stored in app state
- Theme selection (dark/light) managed in state
- Location service permissions checked at runtime
**Build:**
- Android build configuration: `android/app/build.gradle.kts`
- Namespace: `com.novoyuuparosk.speedo`
- Min SDK: Flutter default
- Target SDK: Flutter default
- Source/Target Compatibility: Java 11
- JVM Target: Java 11 (Kotlin)
- iOS build configuration: `ios/Runner/Info.plist`
- Bundle ID: `$(PRODUCT_BUNDLE_IDENTIFIER)`
- Supported orientations: Portrait, Landscape (Left/Right), Portrait Upside Down (iPad)
**Icon Configuration:**
- flutter_launcher_icons configuration in pubspec.yaml
- Source image: `icon/speedo.png`
- Generates both Android and iOS icons with adaptive icon support
- Adaptive foreground: `icon/speedo.png`
**Fonts:**
- Custom font: DIN1451Alt
- Asset file: `fonts/din1451alt.ttf`
- Used for speedometer display typography
## Platform Requirements
**Development:**
- Flutter SDK 3.24.0 or later
- Dart 3.9.0 or later
- Android development environment with Gradle
- Kotlin compiler (for Android native code)
- Physical Android device or emulator with GPS simulation (recommended: physical device for accurate GPS)
**Production:**
- Android 5.0+ (API 21+) for primary platform
- iOS 12.0+ (secondary/untested platform)
- Foreground service capability (Android 12+)
- System alert window permission (for overlay functionality)
- Location services enabled on device
- Screen wake lock capability for continuous monitoring
**Permissions & Capabilities:**
- Runtime permissions:
- `ACCESS_FINE_LOCATION` - High-precision GPS
- `ACCESS_COARSE_LOCATION` - Network-based location fallback
- `ACCESS_BACKGROUND_LOCATION` - Background location access (optional)
- `SYSTEM_ALERT_WINDOW` - Floating overlay window
- `FOREGROUND_SERVICE` - Background service requirement
- `FOREGROUND_SERVICE_SPECIAL_USE` - Overlay service special use
- `WAKE_LOCK` - Keep device awake
- `REQUEST_IGNORE_BATTERY_OPTIMIZATIONS` - Battery optimization bypass
---
*Stack analysis: 2026-02-09*