nachem/runTiyul
Project Overview
RunTiyul
Offline-first Flutter mobile app for trail runners with offline maps, GPX routes, and GPS recording.
True Intent (AI Assessment)
A genuine open-source, privacy-respecting mobile app for offline trail navigation and GPS run recording.
README Accuracy
Notes
Source code matches README claims: offline map storage (tile_store, offline_download_service), GPX handling (gpx_service), local sqlite persistence, and no networking code beyond map tile fetching and a GitHub Releases API call on the marketing site. No trackers, analytics, or suspicious network endpoints observed.
RunTiyul is a Flutter-based mobile application for Android and iOS that provides trail runners with offline map access, GPX route import and building, GPS activity recording, and on-route navigation. The codebase is primarily Dart (around 511KB) with small platform-specific Kotlin and Swift shims for Android and iOS integration.
The problem it addresses is a real one for backcountry runners: cellular coverage is unreliable or non-existent on trails, and most mainstream running apps require connectivity or upload user data to third-party servers. RunTiyul is designed to work fully in airplane mode by pre-downloading map tiles, and it stores everything locally on the device with no account system and no telemetry.
The target users are trail runners, hikers, and outdoor enthusiasts who need to follow a planned route in areas without signal. Users download the app via GitHub Releases (APK for Android sideloading, unsigned IPA for iOS sideloading via AltStore/Sideloadly), pre-download offline map areas, import or build GPX routes, then record their runs with GPS while receiving off-route and junction alerts.
Under the hood, the app uses flutter_map for map rendering, vector_tile_renderer and vector_tile packages for offline vector tile support, geolocator and permission_handler for location services, sqflite for local persistence, and the gpx package for GPX import/export. Audio and TTS packages (audioplayers, flutter_tts) power navigation alerts. Architecture is organized into features (map, recording, routes, activities, offline_maps), services (location, tile_store, navigation_monitor, trail_router), core utilities (geo math, tile math), and data (repository + sqlite database). A native Android foreground service (DownloadService.kt) keeps the process alive during offline tile downloads.
Notable positives: MIT license, clear documentation in docs/wiki/, disciplined CI with a release workflow that validates semver tags against pubspec.yaml and requires authored release notes, and an explicit stance against using the public OSM tile server for bulk downloads. The project is early-stage (1 star, single maintainer, actively seeking contributors) and the README honestly states iOS runtime validation and background tracking are still pending.
| Languages | Dart, Kotlin, Swift, HTML, CSS, JavaScript |
| Runtime | Flutter 3.44.6+ / Dart SDK ^3.12.2 |
| Framework | Flutter |
| Database | SQLite (via sqflite) |
| Package Manager | pub (Dart/Flutter) |
| Key Dependencies | flutter_map, geolocator, sqflite, gpx, flutter_riverpod, vector_tile_renderer, permission_handler, flutter_tts |
| Build Tool | Flutter build (Gradle for Android, Xcode for iOS) |
| Test Framework | flutter_test, XCTest (iOS) |