Shoham Fellner

Selected Work
Case Study

Live Drone Patrol Console

Nando · 2022-2024

Put the responding guard and the command room on the same live picture, from anywhere in the world.

RoleFrontend Developer & UX/UI
Stack

[React] [Leaflet]

Design Files
Live console - map, video feed and telemetry
Reconstruction
Live Drone Patrol Console interface

Interface reconstructed with a generic site and an AI-generated drone feed. Not a real client's data.

01

The Stakes

The responding guard is the site's own security guard. The command room is that same security team's operators, plus the drone pilots - one room, both roles. Used daily, across multiple operational sites.

The drone gives a perspective nobody on the ground has, but a dropped feed isn't a failure state - it's a normal part of operating a drone in the field. The drone itself is built to continue its mission, or return to base if its battery runs low, and both the guard and the command room have other ways to keep working the incident without it.

02

My Role

Solo frontend, owning UX/UI and the implementation. I joined when the product was a single video stream and built it out from there - my first project, taken on as a junior with full ownership of the frontend.

The backend was a separate team: C#/.NET services, MongoDB for user management, and a Node.js API server running in Docker. I built against what they exposed.

03

The Problem

"Same live picture" was the actual solution, not a description of the problem: the drone operator and the guard needed to see the same event, at the same time, so both could act on the same information. The command room also carries higher permissions than the guard - editing waypoints, gate positions, fences, and flight presets - so the same screen had to serve two different levels of control.

Sites with more than one drone add a second problem on top: a single command-room operator may need to watch and manage several drones at once, each with its own video feed and its own position on the map. The default single-drone view couldn't just stretch to cover that - it needed a dedicated view built for it.

04

Decisions

Building on a mapping library I didn't choose

Constraint
Leaflet was set before I joined, and the client base included sites with far better aerial imagery available than the default map tiles.
Decision
Layered clustering and custom tile sources on top of Leaflet, so those sites could use their own aerial views instead of the stock map.
Trade-off
Built by hand, without a baseline to weigh it against - I never got to compare it with what Mapbox or Google Maps would have handled for free. A real cost, on top of this being my first project.

One shared view, two permission levels

Constraint
The guard needs the same live picture as the command room, but only the command room should be able to edit the map.
Decision
A single interface with permission-gated UI, rather than two separate builds, so both roles stay in sync on the same underlying data.
Trade-off
Every map feature has to be designed for two audiences from the start, instead of shipping operator-only tools as a separate track.

One operator, several drones

Constraint
Sites with more than one drone needed a single command-room operator able to track and manage every one of them at once.
Decision
A dedicated multi-drone view, built specifically for sites with more than one drone, rather than stretching the single-drone view to cover it.
Trade-off
Screen space and attention turned out to be the real constraint, not bandwidth - fitting several live feeds in front of one person was the harder problem.
05

Evidence

Not a real client's site or footage - a generic area and an AI-generated drone feed stand in for the real interface.

Guard and command room share this same live view - map, video feed and telemetry together.
Guard and command room share this same live view - map, video feed and telemetry together.
The command room's added controls - waypoints, gates, fences, flight presets.
The command room's added controls - waypoints, gates, fences, flight presets.
The guard's view in the field.
The guard's view in the field.
06

Outcome

As of when I left, it was in daily operational use across every deployed site - guards and command rooms working from the same live picture, real incidents included.

07

What I'd Change

Move telemetry off polling and onto WebSockets. It was the plan the whole time I was there - it just never landed before I moved on. Polling works, but it's the wrong tool for something this real-time.