Client platform · Skyforest (Sweden)

Skyport

The operations platform that turns Skyforest's drone flights into finished map layers, end to end.

1/3Dashboard grouping missions and work orders by customer

Skyforest, a Swedish forestry-tech company, needed drone photogrammetry to flow from the field to published layers without GIS specialists in the loop. I architected the platform and lead the Territorial team that builds and operates it: web app, API, and a distributed processing backend.

At a glance

  • Backend built entirely on n8n workflows and Ordo, the orchestration control plane I created for this project
  • Photogrammetry runs on a fleet of Windows machines coordinated through MinIO-backed distributed locks with Agisoft process detection
  • Next.js web app with MapLibre maps for customers, missions, work orders and offline-first data submission
  • Every mission, customer and processed layer flows through the system with nobody touching a terminal

The problem

Skyforest flies drones over forest estates and delivers orthomosaics, elevation models and derived layers to its customers. The bottleneck was never the flight: it was everything after it. Photo sets had to be moved by hand, processed in desktop software, checked, published to a map server and tracked in spreadsheets, and every step depended on someone who knew GIS.

The goal was a platform where the operations team submits a flight and the finished layers show up, with every job visible and recoverable along the way.

What we built

Skyport is three things: a web app where the team manages customers, missions and work orders and submits new photo sets; an API that owns the domain model and talks to storage; and a processing backend that does the heavy work. The web app is a Next.js application with MapLibre maps, deployed at the edge, with an offline-first submission flow so field data can be staged before a connection is available. A desktop toolkit covers the cases where submitting straight from the machine that holds the photos is faster.

The backend is where most of the engineering went. There is no bespoke job server: every processing step is an n8n workflow, and Ordo sits above n8n as the control plane. Ordo validates every job against executor contracts before it runs, tracks jobs, steps and artifacts as first-class database state, and lets n8n workers claim steps safely. Photogrammetry itself runs in Agisoft Metashape on a fleet of Windows workers. Each worker holds MinIO-backed locks with a TTL, detects a running Agisoft process to avoid double-scheduling, and a reaper workflow renews or releases locks based on whether the owning n8n execution is still alive. Finished rasters are published to GeoServer and become layers the customer can open the next morning.

Why it mattered

Skyport is the project that made Ordo necessary. Pure workflow automation was fine for the individual steps but could not guarantee that a multi-step job would either finish or fail visibly, with its artifacts accounted for. Once that layer existed, the rest of the platform became boring in the best way: the team submits, the fleet processes, the map updates.

Today Skyport runs Skyforest's production photogrammetry pipeline, and Sentinel watches every piece of it, from the n8n workers to GeoServer.

More projects

All projects