Parameterize the previously hardcoded API_BASE so a staging build can point at
the staging API without forking the code:
- env.js.template + /docker-entrypoint.d/30-fleetnow-env.sh render ${API_BASE}
into /env.js on container start (envsubst ships with the nginx image)
- index.html loads /env.js and uses window.FLEETNOW_API_BASE, falling back to
the prod API (https://fleetapi.rahamafresh.com) when unset — so prod/main is
unchanged; staging sets API_BASE=https://fleetapi.fivetitude.com
- nginx: serve /env.js with no-store
Enables the fleetnow.fivetitude.com staging app (Coolify, staging branch).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a data-driven overlay system: an OVERLAYS registry + generic addOverlay()
that renders each layer as a MapLibre symbol layer (auto-declutter via
icon-allow-overlap:false, ~8->16px zoom-scaled icon), plus a collapsible
"Layers" control to toggle each on/off (all OFF by default). First layer:
Shell stations from layers/shell_stations.geojson (232 pts, OSM kenya-260605),
11px Shell-yellow pump icon. Dockerfile now copies layers/ into nginx. Adding
the next layer = drop a .geojson + one registry entry.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Single-file MapLibre SPA merging live vehicle positions and historical
trips into one console. Reads the existing dashboard read-API
(fleetapi.rahamafresh.com); served as a static nginx image for Coolify.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>