4.4 KiB
4.4 KiB
FuelBoard Backlog
FuelBoard — England-wide petrol-station price widget + app. Relay mirrors the UK gov data (hourly CSV); app fetches the full-UK dump (~8,038 stations, all prices) once per 12 h and filters/sorts on-device.
Priority guide: P0 = next build, P1 = soon, P2 = later, P3 = maybe/idea. Status: TODO / IN PROGRESS / DONE / BLOCKED.
P1 — Soon
- EV charging? — National Chargepoint Registry as a 4th "Charging" tab (second relay endpoint, ~40k+ UK chargers, OGL, connector-type filter) vs fuel-only.
P2 — Later
- Widget configuration — let the widget's fuel be chosen per-widget
(App Intent
FuelSelectionIntent+StaticConfiguration→AppIntentConfiguration), instead of inheriting the app's selected fuel. Requires iOS 17AppIntentConfiguration. - CarPlay — widgets render but can't launch Maps; consider a proper CarPlay scene (CPListTemplate) for navigation deep-links.
- Alert region tuning — make alert trigger radius + dedup window user-configurable (currently fixed 300 m trigger / 1 per station per hour).
- Pull-to-refresh spinner state — surface refresh in-flight state
(currently
refreshablefires but no visible progress in the row list). - Offline first-run — first launch without network currently shows empty states; bundle a sample dump so the app demos offline.
- Localization — UK English only today; audit string catalog for l10n.
- Dark mode polish — verify brand logos (white-circle clips) and RAG dot contrast under dark appearance on-device.
P3 — Ideas / Research
- Production data mirror (GitHub) — relay pushes the synced dump
(
stations.json+latest.jsonversion pointer) to a PUBLIC GitHub repo; the app fetchesraw.githubusercontent.comwith the LAN relay as fallback source. Public repo required for App Review (reviewer must fetch the data themselves); HTTPS/ATS fine; plain JSON data is not "remote code" (2.5.2-safe); bundle a small fallback dump so the app never demos empty. Needs GitHub PAT (aptonline account). - Fuel-price prediction — trend from historical dumps (relay could keep a rolling archive) to show "price tends up/down".
- Price alerts for a specific station — notify when a starred station's price drops below a user threshold.
- Share sheet — share "Cheapest Unleaded near me" as text/image card.
- Watch app — glanceable cheapest-price complication (WatchKit + shared app-group store; watch target would need to be added to the project).
- App Clip — 10 MB budget for "find cheapest fuel nearby" without install.
- Widget picker: dual-unit distance labels — the Edit-Widget Distance row label is cached by the system at sheet-render time and only re-resolves on picker interaction, so "mirror the app unit" goes stale. Fix: label options with both units ("5 miles (8 km)") so nothing can go stale; widget rows keep mirroring the live unit.
Done (recent)
- Switch dataset to govuk API data — official Fuel Finder OAuth API via
relay-api :8789 (source: api, ~8,012 stations); app baseURL → :8789; credentials
live in relay
.envonly, never in the IPA - Unit test target for the app — FuelBoardShared XCTest target, 37 tests (title sanitizer, decode price guard, RAG thresholds, cheapest/closest baseline, miles↔km)
- Backlog hygiene — implemented items marked DONE, obsolete pruned
- Sync retry with exponential backoff — relay-api retries failed syncs
15s→15min cap;
/healthexposes retry state (6a58275) - England-wide full-UK dump, on-device filtering (relay
142061b, appcf9765b) - Cache-first, 12 h gate, pull-to-refresh only
- Distance filter 5/10/15 miles, local-only changes (no re-fetch)
- Closest mode = whole country, distance picker disabled
- Delta/TOP baseline = cheapest-within-radius in both modes
- Three-layer price sanitisation (relay band 50–500p / app decode guard / title-case)
- Title-case station names (chunk-aware sanitizer)
- Native large-title navigation (Mail-style collapse) —
313fe84 - E10/E5 bracket labels in picker + descriptions —
05f3ef0 - Gitea remotes created + pushed (
apt/fuelboard,apt/fuelboard-relay) - Brand logos: proper 2x/3x assets, 75% smaller (315 KB → 79 KB)
- Security audit (see SECURITY.md)
- App Store approval gotcha review (see APPSTORE.md)