About mapplot

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.

Plan
Mission planner
Fly
Preflight & safety
Process
Local NodeODM
Deliver
Client portal

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

Mapping

WebGL vector map rendering in the planner. Sub-pixel precise, fully offline-capable, no Mapbox token required.

Turf.js

Geodesy

Client-side GIS — area, haversine distance, photo footprints, GSD, all computed in the browser without a server round-trip.

Next.js 15

Framework

App Router + React Server Components. The planner iframe communicates with the shell via postMessage.

Supabase

Auth & Data

PostgreSQL with row-level security. Auth, projects, processing jobs, and all business data — no ORM magic.

NodeODM

Processing

OpenDroneMap REST API running on your Docker host. GeoTIFF, LAS/LAZ, DSM, DTM, OBJ — fully local.

Cloudflare Tunnel

Networking

Bridges hosted mapplot to a local NodeODM instance without opening firewall ports. Your processing rig, your network, accessible from anywhere.

JSZip

Export

Browser-side KMZ generation to WPML 1.0.2 spec. The actual DJI standard, assembled client-side.

Get started

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