Sparkilo — find the cheapest fuel & EV charging near you across 17 countries. Real-time official prices, route/best-stop planning, price alerts, OBD2 + GPS trip logbook, consumption & cost tracking. Open-source, ad-free, no account, privacy-first.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Find a better fuel stop. Understand what each kilometre costs.
Sparkilo brings fuel-price comparison, route searches, fill-ups and trip records together in one free,
open-source app. It is for everyday drivers, cross-border commuters and road-trip planners who want to
connect the price at the pump with what running their own car actually costs.
Start with a nearby search. Add a fill-up log when you want to track consumption.
Connect a compatible OBD-II adapter when you want engine data alongside your trips.
The core app works without an account; cloud sync is optional.檢視完整 README ↗Find a better fuel stop. Understand what each kilometre costs.
Sparkilo brings fuel-price comparison, route searches, fill-ups and trip records together in one free, open-source app. It is for everyday drivers, cross-border commuters and road-trip planners who want to connect the price at the pump with what running their own car actually costs.
Start with a nearby search. Add a fill-up log when you want to track consumption. Connect a compatible OBD-II adapter when you want engine data alongside your trips. The core app works without an account; cloud sync is optional.
Get started · User guide · Releases · Issues & roadmap
| Platform | Availability |
|---|---|
| Android — Google Play | Public release on Google Play. Open Testing is a separate beta channel that receives builds first. |
| Android — F-Droid client | Add the project's own F-Droid repository to install the libre build. |
| Android — direct download | APKs of the Google Play build are attached to GitHub Releases. |
| iPhone | TestFlight beta only; the app is not yet on the App Store. See the installation guide for access. |
The libre (F-Droid) build leaves out Google Play Services, ML Kit and the Sentry SDK. Receipt and pump-display text recognition is therefore unavailable in that build; manual entry and QR-code scanning remain. Read the installation guide before switching between builds, because their signing keys can differ.
Choose the Basic, Medium, Full or Custom feature preset to keep the app as simple or as deep as you need. The interface is available in 23 languages.
| Compare fuel prices | Plan across borders | Follow a tank's consumption |
|---|---|---|
Android screenshots captured in September 2026. The illustrated user guide has the full tour.
Fuel data comes from government open data and, where no national feed exists, from retailer feeds. Coverage, fuel grades, station details and update frequency vary by source. Cached results stay readable offline; fresh prices need a connection and a reachable provider.
The code contains 17 country integrations. Thirteen are offered in the app's country selection:
| Countries | What you get |
|---|---|
| Germany, France, Austria, Spain, Italy, Portugal, Slovenia, United Kingdom, Mexico, Argentina | Station-level prices from a national source. Update cadence ranges from about 5 minutes (Germany) to daily. Germany needs a free Tankerkönig API key; without one the app shows demo data. Argentina's source host was unreachable in September 2026 (#4171). |
| Denmark | Prices from the OK, Shell and Q8 chains only — a cheapest result speaks for those three chains, not the whole market. |
| Luxembourg | The national regulated price, shown at city locations. These are not individual station quotes or coordinates. |
| Greece | Regional averages from the ministry's price bulletins, one location per prefecture rather than per forecourt. |
| South Korea, Chile, Romania | Implemented but hidden until their live feeds are verified. South Korea and Chile also need provider credentials. |
| Australia | Unavailable: the NSW FuelCheck endpoint was retired (#804); the integration stays hidden. |
For a cross-border journey, set up a profile with the right fuel for each country. Fuel names and grades differ across borders, so check that the selected grade suits your car.
The country configuration and provider capabilities are the source of truth for this table; the issue tracker follows coverage repairs.
Consumption modelling is still being validated against real driving and fill-up data, and the project has no general accuracy benchmark yet. The new fuzzy consumption engine is staged and not yet the production estimator: see the design decision, the empty replay corpus and #4222. OBD-II lost-connection recovery is still being field-validated (#4195).
Sparkilo is local-first and has no ads, no advertising identifiers and no tracking. Fuel search and local logging need no account. Online features still send requests:
Read the privacy policy v4 and the
privacy and sync guide
for purposes, recipients and controls. docs/privacy/data_inventory.json
is the machine-readable inventory; tests keep the policy, the Play Data Safety answers, the iOS privacy
manifest and this README in line with it.
Sparkilo is an actively developed independent project with a public Android release and an iOS beta. Background recording (#3417), OBD-II recovery, consumption modelling and provider reliability are active areas of work. Alerts and background features depend on permissions and operating-system limits, and vary by platform and build. Trip-cost, refuelling and vehicle-comparison features are planned in #4358.
The release notes list shipped changes; open issues track known problems and planned work.
The public app is Sparkilo. The repository, Dart package (tankstellen) and Android application ID
(de.tankstellen.fuelprices) keep the project's original name.
Use Flutter 3.44.9 (the version CI pins) with Dart 3.12. Android development needs the Android SDK, JDK 17 and a device or emulator. iOS development needs macOS and Xcode; see the iOS signing guide.
git clone https://github.com/fdittgen-png/tankstellen.git
cd tankstellen
flutter pub get
bash scripts/install_hooks.sh
dart run build_runner clean
dart run build_runner build --delete-conflicting-outputs
flutter run --flavor play
The run command targets Android. Provider keys are entered in the app; TankSync is optional. Configuration describes build flags and runtime settings.
flutter analyze
flutter test --exclude-tags=network
flutter build apk --debug --flavor play
Release builds need a signing keystore; see release builds. The F-Droid build guide covers the libre flavour, and network tests covers the live-provider checks.
The Flutter codebase is organised by feature, with shared services for data access, caching, storage and platform integration.
| Area | Approach |
|---|---|
| UI and state | Flutter with Riverpod code generation; feature folders separate domain, data and presentation. |
| External data | Each country implements a shared station-service contract and declares its provider capabilities. Results carry their source. |
| Resilience | Service chains combine requests with cache fallbacks; upstream availability still limits fresh results. |
| Local records | Hive persistence, with secure storage for credentials. |
| Optional sync | TankSync on Supabase; backend setup is included for self-hosting. |
| Maps and devices | OpenStreetMap through flutter_map; platform integrations for location, Bluetooth, background work and widgets. |
| Validation | Unit, widget and integration tests plus static checks in GitHub Actions; live-provider checks are tagged and run separately. |
The architecture decisions explain the choices and trade-offs. The contributor guide includes a codebase tour, and the new-country guide explains how to add a provider.
Useful contributions include reproducible bug reports, provider verification, translation review, accessibility improvements and tests on real devices and adapters.
Before changing code, read the contribution guide and the
repository rules. Link each change to an issue, branch from master, and keep pull
requests focused. Follow the clean code-generation and localisation workflow for models, providers and
user-facing strings.
Sparkilo is licensed under the GNU Affero General Public License v3.0 or later. © 2026 Florian DITTGEN. It was MIT until 2026-09-20 — see ADR 0028 for why that changed, and note that everything released before then stays MIT and can be forked on those terms for ever.
What this means for you: almost certainly nothing. Associations, public bodies, schools, individuals — and companies running Sparkilo as it ships — owe nothing and never will, whether or not they run a commercial fleet on it. The AGPL's §13 obligation is triggered by modifying Sparkilo and serving it over a network, not by using it and not by charging for the service you run with it. If you do modify it and would rather not publish the changes, there is a commercial licence.
Two additional permissions are granted under §7 — for app-store distribution and for the Play flavour's proprietary Google libraries — in LICENSE-EXCEPTIONS.md.
"Sparkilo" and its logo are trademarks; a fork is welcome and needs its own name (TRADEMARK.md). Contributions: see CONTRIBUTING.md.
If Sparkilo saves you money, you can support its development through the repository's GitHub Sponsor button or PayPal.
Thanks to the fuel-price publishers, Tankerkönig (CC BY 4.0), Open Charge Map, OpenStreetMap contributors, and the Flutter and Dart communities. Third-party data and assets remain subject to their own licences and attribution requirements.