Log inBook a Demo
BuildSeniorFull-stackAuto-graded

Full-Stack Engineer: Build a live drone fleet map with expiring commands and replay

A hands-on test of building a real-time app with an AI agent: turn a live stream into state, keep commands safe when a drone drops out, and replay the past.Use Claude Code to build the operations map for a simulated fleet of about 100 crop-survey drones: a live map fed by a 5-per-second telemetry stream, commands that wait for a drone that has lost its link and expire on time, and a replay of any moment of the mission, against a provided gateway you cannot change. Your backend is checked with scripted fleet scenarios. About 2 hours, in English or Italian.
110 min
react, vite, typescript, fastapi, python, postgresql, websockets

You're done when

  • GET /api/drones lists every drone the gateway has reported, each with its id, its connectivity (offline while its link is down) and its latest position with a timestamp, read from the telemetry stream and never from the gateway's /admin hooks.
  • WS /api/stream keeps pushing drone positions, so the map moves without a reload.
  • POST /api/drones/{id}/commands returns {command_id, status}, and GET /api/drones/{id}/commands lists each command sent with its status.
  • A command for an offline drone waits for it: delivered within 5 seconds of the drone reconnecting while still valid, never once its TTL has run out.
  • GET /api/history?at= returns the fleet as it was at that instant, in the same shape as GET /api/drones.

What it measures

Real-time data modellingFolding a 5-per-second stream from about 100 drones into current state per drone, including the backlog a drone uploads with its original timestamps when it reconnects.
Time as a first-class dimensionStoring telemetry so any past moment can be rebuilt, instead of keeping only the latest value per drone and finding out that replay is impossible.
Designing against an unreliable peerHolding commands for drones that are offline and expiring them correctly, against a gateway that does not queue and rejects what it cannot deliver.
Working to a fixed contract with an agentBriefing the agent on an API that is checked automatically, and checking its work on the cases a first pass gets wrong: expiry, reconnection, the past.

Your environment

Terminal + editorA full shell in the browser
Claude CodePre-authenticated, no key setup
Isolated microVMYours alone, wiped afterwards

Start this lab

110 min
Start labYou'll sign in to Anthropos to start. The lab opens in a private cloud workspace with Claude Code ready to use.
AI Labs is part of Anthropos Workforce. Not on your plan yet? Book a demo