Open-source energy route planner for fuel and electric vehicles. Self-hostable.
No app in the world combines route planning with real-time energy prices, detour time calculation, and smart refueling recommendations. Propel does.
- Real-time fuel prices from government open data APIs (Spain, France, Germany, Italy, UK, Austria, Portugal)
- Interactive map with 65,000+ stations across Europe
- Route planning with geocoding autocomplete and corridor station filtering
- "Cheapest within N minutes detour" — calculates if a detour is worth it (planned)
- Smart refuel/recharge advisor based on your remaining range (planned)
- EV charging integration (planned)
- Multi-language, multi-currency, multi-unit support
- Fully self-hostable with Docker Compose
- 100% open source (GPL-3.0)
| Resource | First-time build | Steady state |
|---|---|---|
| RAM | 16 GB (Valhalla tile build) | 4-5 GB |
| Disk | ~15 GB | ~10 GB |
| CPU | Multi-core recommended | Any |
Important: On first start, Valhalla builds routing tiles from OpenStreetMap data (~20 min) and Photon imports geocoding data (~30 min). These are one-time operations — data persists across restarts. Run them sequentially (Valhalla first, then Photon) to avoid memory pressure.
- Clone and configure:
git clone https://github.com/GeiserX/propel.git
cd propel
cp .env.example .env
# Edit .env — set DATABASE_URL and optionally PROPEL_DEFAULT_COUNTRY- Start the stack:
docker compose up -d- Wait for the first-time setup to complete:
# Watch Valhalla build routing tiles (~20 min)
docker logs -f propel-valhalla
# Watch Photon download geocoding data (~30 min)
docker logs -f propel-photon- Seed station data:
npm install
npx prisma generate
npm run scraper:run -- --country=ES --once| Service | First start | Subsequent starts |
|---|---|---|
| Valhalla | Downloads Spain OSM PBF from Geofabrik (~1.4 GB), builds routing tiles with 20 threads. Enhance stage peaks at ~12 GB RAM. | Loads pre-built tiles instantly (~500 MB RAM) |
| Photon | Downloads Photon 1.0.1 JAR (~92 MB) + Spain geocoding dump (~490 MB). Imports ~5.6M documents (~12 min). | Starts OpenSearch with existing index (~1 GB RAM) |
| PostGIS | Creates database schema | Ready immediately |
| App | Ready immediately | Ready immediately |
| Service | Image | Steady-state RAM | Internal Port |
|---|---|---|---|
| app | drumsergio/propel |
512 MB | 3000 (exposed as 3200) |
| db | postgis/postgis:17-3.4 |
2 GB | 5432 |
| valhalla | ghcr.io/gis-ops/docker-valhalla/valhalla:3.5.1 |
512 MB | 8002 |
| photon | eclipse-temurin:21-jre + Photon 1.0.1 JAR |
1 GB | 2322 |
| Directory | Size | Contents |
|---|---|---|
valhalla/ |
~3.5 GB | Spain PBF + routing tiles + tar |
photon/ |
~4 GB | Photon JAR + OpenSearch index |
pgdata/ |
~1 GB | PostGIS database |
| Total | ~8.5 GB |
| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostGIS connection string | Required |
PROPEL_DEFAULT_COUNTRY |
ISO code for initial map view | ES |
PROPEL_ENABLED_COUNTRIES |
Comma-separated ISO codes | All |
VALHALLA_URL |
Valhalla routing endpoint | http://propel-valhalla:8002 |
PHOTON_URL |
Photon geocoding endpoint | http://propel-photon:2322 |
Valhalla and Photon can be configured for any country:
- Valhalla: Change
tile_urlsto the country PBF from Geofabrik - Photon: Change
-country-codes esto your country code in the docker-compose entrypoint - App: Set
PROPEL_DEFAULT_COUNTRYandPROPEL_ENABLED_COUNTRIES
| Country | Source | Stations | Update |
|---|---|---|---|
| Spain | MITECO | ~12,000 | Daily |
| France | prix-carburants.gouv.fr | ~9,800 | 10 min |
| Germany | Tankerkoenig (MTS-K) | ~14,000 | 4 min |
| Italy | MIMIT | ~22,000 | Daily |
| UK | CMA Open Data | ~8,000 | Varies |
| Austria | E-Control | All | Real-time |
| Portugal | DGEG | ~3,500 | Daily |
Next.js 15, React 19, MapLibre GL JS, Tailwind CSS, PostGIS 17, Valhalla 3.5.1, Photon 1.0.1, OpenFreeMap.
See ROADMAP.md for the full plan — from fuel prices to EV charging to global expansion.
GPL-3.0 — see LICENSE