Built by a drone operator,
for drone operators.
Commercial drone work shouldn't require five apps, two spreadsheets, and a prayer that your GCP CSV has the right CRS. mapplot is what happens when you get tired of that.
Here's the stack a typical commercial drone operator runs: a mission planner, a separate ODM wrapper, a spreadsheet for clients, some invoicing SaaS, and a folder called Briefs_FINAL_v3 on the desktop. That's five things to keep in sync for a single job. One client name change means four updates.
mapplot closes that gap. The flight plan, the GCPs, the processing job, the proposal, and the invoice all live in the same project. Change the client name once.
The mission planner uses MapLibre GL and Turf.js for real geodesy in the browser — area, photo footprints, GSD, overlap — all computed client-side without a round trip. KMZ export targets WPML 1.0.2, which is the spec DJI actually ships against, not just a file with a .kmz extension. Preflight checks pull live weather at mission coordinates, not the nearest airport.
For photogrammetry, mapplot integrates with NodeODM — the REST wrapper around OpenDroneMap, running on your hardware via Docker. Your imagery goes from drone SD card to GeoTIFF orthomosaic and LAS point cloud without touching a third-party server. On the hosted version, a Cloudflare Tunnel bridges the web app to your local processing rig — your machine does the work, the browser shows the progress.
Solo pilot or multi-pilot agency — mapplot scales to the operation, not the other way around.
What mapplot is built on
Precision planning
Browser-based mission planning with automated flight patterns, photo position preview, and direct KMZ export. From site boundary to controller-ready file in under two minutes.
Local processing
Integrated NodeODM support lets you process drone imagery into orthomosaics, point clouds, and 3D models on your own machine — no cloud uploads, no per-image fees.
Business operations
CRM, proposals, contracts, invoicing, scheduling, field reports, and client deliverables — all connected to your missions so nothing falls through the cracks.
Privacy by design
Your flight data, client records, and aerial imagery stay in your control. Local processing means images never leave your network. No exceptions.
How it's built
Open standards, named dependencies, no black boxes. The mission planner runs as an isolated iframe and communicates with the SaaS shell via a postMessage bridge — so a planner bug can't take down your invoice history. Here's the actual stack:
MapLibre GL
MappingWebGL vector map rendering in the planner. Sub-pixel precise, fully offline-capable, no Mapbox token required.
Turf.js
GeodesyClient-side GIS — area, haversine distance, photo footprints, GSD, all computed in the browser without a server round-trip.
Next.js 15
FrameworkApp Router + React Server Components. The planner iframe communicates with the shell via postMessage.
Supabase
Auth & DataPostgreSQL with row-level security. Auth, projects, processing jobs, and all business data — no ORM magic.
NodeODM
ProcessingOpenDroneMap REST API running on your Docker host. GeoTIFF, LAS/LAZ, DSM, DTM, OBJ — fully local.
Cloudflare Tunnel
NetworkingBridges hosted mapplot to a local NodeODM instance without opening firewall ports. Your processing rig, your network, accessible from anywhere.
JSZip
ExportBrowser-side KMZ generation to WPML 1.0.2 spec. The actual DJI standard, assembled client-side.
Learn more
Features
Explore the full capability set — mission planner, local processing, business suite, and team tools.
Local Processing Guide
Step-by-step setup for NodeODM — install Docker, start NodeODM, and process your first dataset.
Documentation
Reference guide for mission planning, GCP workflows, exporting, and business operations.
Try it. No card, no timer.
The free plan is real. Plan missions, export KMZ files, see the full workflow — before you spend anything or talk to anyone.
No credit card required · Free plan includes 3 projects · Cancel anytime