Live web map for displaying MeshCore wardrive data collected from your Flutter app.
- 🗺️ Dark theme map (CartoDB Dark Matter tiles)
- 📡 Real-time sample display with GPS locations
- 📊 Statistics panel (total samples, unique nodes, avg RSSI)
- 🔄 Auto-refresh every 30 seconds
- ☁️ Cloudflare Pages hosting (free)
- 💾 KV storage for data persistence
cd /home/chuck/Desktop/meshcore-map-site
git init
git add .
git commit -m "Initial commit: MeshCore wardrive map"# Create a new repo on GitHub (https://github.com/new)
# Name it: meshcore-map (or whatever you prefer)
# Then push:
git remote add origin https://github.com/YOUR_USERNAME/meshcore-map.git
git branch -M main
git push -u origin main- Go to https://dash.cloudflare.com/
- Click Workers & Pages → Create application → Pages → Connect to Git
- Select your GitHub repo:
meshcore-map - Configure:
- Project name:
meshcore-map(or your choice - this becomes your URL) - Production branch:
main - Build settings: None needed (static site)
- Project name:
- Click Save and Deploy
- In Cloudflare dashboard, go to Workers & Pages → KV
- Click Create a namespace
- Name it:
WARDRIVE_DATA - Go back to your Pages project → Settings → Functions → KV namespace bindings
- Add binding:
- Variable name:
WARDRIVE_DATA - KV namespace: Select the one you just created
- Variable name:
- Click Save
Your map will be available at:
https://meshcore-map.pages.dev
(or whatever project name you chose)
Returns all stored samples as JSON.
Response:
{
"samples": [
{
"nodeId": "ABC123",
"latitude": 47.6062,
"longitude": -122.3321,
"rssi": -95,
"snr": 8,
"timestamp": "2026-01-06T00:00:00Z"
}
]
}Upload new samples from your Flutter app.
Request:
{
"samples": [
{
"nodeId": "ABC123",
"latitude": 47.6062,
"longitude": -122.3321,
"rssi": -95,
"snr": 8,
"timestamp": "2026-01-06T00:00:00Z"
}
]
}Response:
{
"success": true,
"added": 1,
"total": 1234
}After deployment, update your Flutter app to upload samples to:
https://your-project-name.pages.dev/api/samples
The Flutter app changes will be provided separately.
- Free tier: 100,000 reads/day, 1,000 writes/day
- Keeps last 10,000 samples (older ones auto-deleted)
- Each upload can contain multiple samples
To test locally, you can use wrangler (Cloudflare CLI):
npm install -g wrangler
wrangler pages dev .This will start a local server at http://localhost:8788