Acknowledgements
locationjoystick is built on the shoulders of many excellent open-source projects. Every library and data source listed here is used directly in the production app. Thank you to every contributor behind them.
Map & location data
| Project | Used for | License |
|---|---|---|
| MapLibre Android SDK | GPU-accelerated map rendering throughout the app. Powers all interactive map screens and the floating map overlay. | BSD 2-Clause |
| OpenStreetMap | Map tile data displayed on every map screen. Tiles are fetched from tile.openstreetmap.org as you navigate. | ODbL (© OpenStreetMap contributors) |
| OSRM — Open Source Routing Machine | Road-following route generation, guided route creation, and roaming with "Follow roads" enabled. The public demo server at router.project-osrm.org is used; waypoint coordinates are sent per request. | BSD 2-Clause |
| Nominatim (OpenStreetMap Foundation) | Place-name geocoding used in the route creator search and the favorites map picker. The public OSMF instance is used; only the search string is sent. | Data: ODbL · Software: GPL-2.0 |
Language & async
| Project | Used for | License |
|---|---|---|
| Kotlin (JetBrains) | Primary language for the entire codebase. | Apache 2.0 |
| Kotlin Coroutines (JetBrains) | All asynchronous operations, background service coordination, and StateFlow/SharedFlow reactive streams. | Apache 2.0 |
| Kotlin Serialization (JetBrains) | JSON serialization for import/export, QR transfer payloads, and OSRM API responses. | Apache 2.0 |
UI & design
| Project | Used for | License |
|---|---|---|
| Jetpack Compose (Google) | Entire UI layer. Every screen, dialog, and bottom sheet is written in Compose. | Apache 2.0 |
| Material 3 (Google) | Design system tokens, components (cards, bottom sheets, FABs, dialogs), and theming. | Apache 2.0 |
| AndroidX Navigation Compose (Google) | In-app navigation between screens and the navigation drawer. | Apache 2.0 |
| AndroidX CameraX (Google) | Camera preview and frame capture used by the QR code scanner during config import. | Apache 2.0 |
Architecture & storage
| Project | Used for | License |
|---|---|---|
| Hilt (Dagger) (Google) | Dependency injection throughout all modules. Provides ViewModels, repositories, and services. | Apache 2.0 |
| AndroidX Room (Google) | On-device SQL database (v2) storing routes, waypoints, and favorites. | Apache 2.0 |
| AndroidX DataStore (Google) | Persistent key-value preferences for settings, speed profiles, GPS realism toggles, and widget configuration. | Apache 2.0 |
| AndroidX Lifecycle (Google) | ViewModel lifecycle management and collectAsStateWithLifecycle() for safe Compose state collection. |
Apache 2.0 |
Networking
| Project | Used for | License |
|---|---|---|
| Retrofit (Square) | HTTP client for OSRM routing requests and Nominatim geocoding queries. | Apache 2.0 |
| OkHttp (Square) | HTTP engine underlying Retrofit. Handles connection pooling, timeouts, and TLS. | Apache 2.0 |
QR codes
| Project | Used for | License |
|---|---|---|
| ZXing — Zebra Crossing (Google) | QR code encoding (export) and decoding (import) for the device-to-device config transfer feature. | Apache 2.0 |
Build & tooling
These tools are used at build time and are not bundled in the released APK.
| Project | Used for | License |
|---|---|---|
| KSP — Kotlin Symbol Processing (Google) | Annotation processing for Hilt and Room code generation. | Apache 2.0 |
| Kover (JetBrains) | Test coverage reporting. Aggregates coverage across all modules into a single HTML/XML report. | Apache 2.0 |
| JUnit 5 | Unit test runner for all :core:* and :feature:* module tests. |
EPL 2.0 |
| MockK | Kotlin-native mocking library used in unit tests for repositories, services, and ViewModels. | Apache 2.0 |
| Turbine (Cash App) | Testing utility for Kotlin Flows. Used to assert emission sequences in ViewModel and repository tests. | Apache 2.0 |
| Robolectric | Android JVM test environment for tests that depend on Android framework classes without a device. | MIT |