Commit Graph

88 Commits

Author SHA1 Message Date
Ovidiu U
0b289c8ec2 feat: extract fuel.search Livewire component with stations-found dispatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 21:58:01 +01:00
Ovidiu U
f4a958a76c docs: FuelFinder sub-component split design spec 2026-04-07 21:27:56 +01:00
Ovidiu U
4e9b809a10 feat: add user geolocation marker and auto-zoom to map based on search radius
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-07 20:21:31 +01:00
Ovidiu U
0b26c4c257 fix: convert avg_price from pence to pounds before linear regression calculation
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-07 14:51:14 +01:00
Ovidiu U
6da626347b docs: add FuelFinder mobile landing implementation plan
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-07 14:43:03 +01:00
Ovidiu U
6a80c11f38 feat: add LLM prediction providers with structured output support
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 14:42:44 +01:00
Ovidiu U
e9612666e3 feat: wire FuelFinder to home route, replacing static homepage 2026-04-07 14:38:03 +01:00
Ovidiu U
41a2cc5f43 feat: build fuel-finder view with mobile layout 2026-04-07 14:36:21 +01:00
Ovidiu U
8a8dc15c0d feat: add x-mobile-header and x-mobile-footer components 2026-04-07 14:35:27 +01:00
Ovidiu U
b21c99411d feat: add x-fuel.* Blade components 2026-04-07 14:34:44 +01:00
Ovidiu U
6d6def18f1 feat: add FuelFinder Livewire component
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 14:32:45 +01:00
Ovidiu U
80ae25d98a test: add failing FuelFinder component tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 14:31:00 +01:00
Ovidiu U
3d552e8fcb docs: add FuelFinder mobile landing page design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 14:11:04 +01:00
Ovidiu U
4b29e6fdb0 feat: add saved stations mockup with iconify-icon package
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-07 08:29:12 +01:00
Ovidiu U
41be8e2806 superdesign
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-06 20:01:46 +01:00
Ovidiu U
5bc6ca720c feat: add price classification enum and reliable sort option
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-06 09:58:45 +01:00
Ovidiu U
f5b39e8dc4 fix: add match default arm and escape colour in station-map popup 2026-04-06 09:49:37 +01:00
Ovidiu U
4f695ca37c test: add lat/lng to faked meta fixture in StationSearchTest 2026-04-06 09:46:17 +01:00
Ovidiu U
40c0815a2c feat: add Leaflet map and colour legend to station search results 2026-04-06 09:45:22 +01:00
Ovidiu U
ffdcb8baff feat: register stationMap Alpine component 2026-04-06 09:44:30 +01:00
Ovidiu U
a819292b40 fix: harden station-map component (XSS escape, destroy hook, null guard, bounds) 2026-04-06 09:43:49 +01:00
Ovidiu U
9d591a1d5a feat: create station-map Alpine/Leaflet component 2026-04-06 09:41:05 +01:00
Ovidiu U
21aea84797 test: add postcode path assertion for meta lat/lng 2026-04-06 09:39:28 +01:00
Ovidiu U
cef21a4f0f feat: include search lat/lng in station API meta response 2026-04-06 09:37:39 +01:00
Ovidiu U
0955873221 feat: install leaflet and import CSS 2026-04-06 09:35:35 +01:00
Ovidiu U
68c535b348 fix: use wire:model.live on fuel type, radius, sort selects to trigger updated hooks 2026-04-05 20:51:55 +01:00
Ovidiu U
dce2bd6e50 feat: auto-reload results when fuel type, sort, or radius changes 2026-04-05 20:50:18 +01:00
Ovidiu U
d4d532000d fix: align sort validation with API (nullable) 2026-04-05 20:48:21 +01:00
Ovidiu U
fa94bb537b feat: add sort option to station search form 2026-04-05 20:48:00 +01:00
Ovidiu U
cd9d833e44 feat: default fuel type to petrol 2026-04-05 20:46:25 +01:00
Ovidiu U
eed6ef9c81 fix: guard cache hit with instanceof to handle stale LocationResult entries 2026-04-05 20:45:28 +01:00
Ovidiu U
a11f0ba186 fix: increase postcode field max length to allow city/town names 2026-04-05 20:43:33 +01:00
Ovidiu U
f05a617af0 fix: use app.api_secret_key for self-API calls, handle ConnectionException 2026-04-05 20:41:23 +01:00
Ovidiu U
a034e5cd6d fix: null guard on price_updated_at, consistent price formatting, use str() helper 2026-04-05 20:37:04 +01:00
Ovidiu U
93bd63aefb feat: implement StationSearch view with form, results list, and all UI states 2026-04-05 20:34:17 +01:00
Ovidiu U
649772f65f fix: add X-Api-Key header to API feature tests and register auth routes 2026-04-05 20:32:20 +01:00
Ovidiu U
130576c9ba feat: implement StationSearch Livewire component 2026-04-05 20:28:15 +01:00
Ovidiu U
7e1a000e2a feat: add API key authentication middleware
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Adds `VerifyApiKey` middleware to validate `X-Api-Key` header against `app.api_secret_key` config. Returns 403 if key is missing or invalid.
2026-04-05 20:27:57 +01:00
Ovidiu U
1860cf0a49 feat: add API key authentication and update tests
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Adds `VerifyApiKey` middleware protecting all API routes with `X-Api-Key` header validation. Wraps `/api/stations`, `/api/stats/searches`, and `/api/prediction` in throttled middleware group (60 req/min). Updates StationSearchTest to use `RefreshDatabase`, adds `meta` assertion checks, and validates `fuel_type` in HTTP request assertions. Removes auth routes from API docs and replaces with API key authentication instructions. Adds `api_secret_key` config option.
2026-04-05 20:27:41 +01:00
Ovidiu U
1318e3ac3b test: fix quality issues in StationSearchTest 2026-04-05 20:27:17 +01:00
Ovidiu U
55cd68fbaa test: add failing tests for StationSearch Livewire component 2026-04-05 20:24:20 +01:00
Ovidiu U
279ed529ab feat: add fuelalert config and public /stations route 2026-04-05 20:21:43 +01:00
Ovidiu U
a80320bc27 docs: add station search page implementation plan 2026-04-05 20:19:37 +01:00
Ovidiu U
156d925a35 docs: add station search page design spec 2026-04-05 20:17:13 +01:00
Ovidiu U
6176359d1f feat: add updated and brand sort options to /api/stations endpoint
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Extends NearbyStationsRequest validation to accept `sort=updated` and `sort=brand`. Updates StationController to use match expression with dedicated closures: 'updated' sorts by price_effective_at descending (newest first), 'brand' sorts alphabetically by brand_name, with existing price and distance options.
2026-04-05 19:52:20 +01:00
Ovidiu U
6249ed8fe2 refactor: add Enum labels, fix indentation, and add URL links to StatsOverviewWidget
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Adds `label()` methods to TrendDirection and PredictionSource enums for cleaner display. Fixes mixed tab/space indentation in StatsOverviewWidget. Links all stats cards to their respective Filament resources (searches, stations, oil-predictions, api-logs). Documents BrentPriceChartWidget's manual registration.
2026-04-05 19:52:12 +01:00
Ovidiu U
4f57c97015 docs: add comprehensive API reference documentation
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Adds complete API reference (api-reference.md) covering all endpoints: /api/stations (nearby search with postcode/lat+lng), /api/stats/searches (aggregated search stats), /api/prediction (7-day price forecast with multi-signal breakdown), and auth routes (register/login/logout/me). Includes request/response examples, error shapes, fuel type aliases, and signal structure details. Also removes unused AccountWidget from admin panel, disables BrentPriceChartWidget discovery, and adds searches stat to StatsOverviewWidget.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 19:34:32 +01:00
Ovidiu U
7101ed3550 feat: add postcode resolution to /api/stations and Filament SearchResource
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Extends NearbyStationsRequest to accept `postcode` (full or outcode) as an alternative to lat/lng. PostcodeService resolves it via postcodes.io and falls through to coordinates. Also adds SearchResource to the Filament admin panel for viewing logged search activity with fuel type filter and price/distance stats columns. Includes SQLite GREATEST/LEAST function polyfills in AppServiceProvider for test compatibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 19:10:25 +01:00
Ovidiu U
3ccdc28763 prediction with context
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
2026-04-05 17:08:16 +01:00
Ovidiu U
0bea50b843 feat: add GET /api/stats/searches endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 19:28:41 +01:00