Open wardriving map for WiFi and BLE. Public reads, contributor uploads, team rankings, REST API.
- Frontend: Vite + Leaflet + globe.gl
- API: Fastify + PostGIS + Supabase Auth
- Worker: Cloudflare cache in front of the API
- Data license: ODbL-1.0
https://github.com/jaylikesbunda/openwd
app/ Vite frontend
server/ Fastify API + PostGIS migrations
worker/ Cloudflare Worker cache
supabase/ Auth email template
cp .env.example .env
docker compose up -d # PostGIS
npm install
npm run dev # app + APIDefault URLs: app http://localhost:5173, API http://localhost:8787.
npm run dev # dev server (app + API)
npm run build # build app
npm run start # run API
npm run check # node --check on server sources
# server-side jobs
npm run tiles:generate # build MVT tiles
npm run tiles:upload # upload tiles to R2
npm run oui:import # load OUI prefixes
npm run intel:backfill # backfill manufacturer/auth group
npm run geo:rebuild # rebuild geo stats
npm run heatmaps:rebuild # rebuild heatmap_cells
npm run clusters:rebuild # rebuild cluster_cellsFrontend reads VITE_* vars. API reads DATABASE_URL, SUPABASE_URL, ALLOW_DEV_UPLOADS, R2_*, TILE_*, HEATMAP_*, etc. See .env.example for the full list.
ALLOW_DEV_UPLOADS=true is for local development only. The server refuses to start with it set in production.
- Create a Supabase project, run
server/migrations/001_init.sqlin the SQL editor, then the rest inserver/migrations/in order. - Deploy the API to Render using
render.yaml. Set the secrets from thesync: falseentries. - Deploy
app/to Cloudflare Pages. Build command:npm install && npm run build --workspace app. Output:app/dist. - Deploy
worker/withwrangler deploy. SetAPI_ORIGINto the Render URL. The worker name isopenwardrive-api-cache; the hostcache.api.openwardrive.comshould be routed to it via a custom domain in the Cloudflare dashboard. - The API serves
/legal/{privacy,terms,code-of-conduct,license}fromapp/dist/legal/.
Code: GNU Affero General Public License v3.0 or later (AGPL-3.0).
Public data: ODbL-1.0.
See NOTICE for third-party data source attribution.