A free, no-account, no-ads coding game that teaches young kids (≈5–7) to program — by flying a drone.
Kids snap together friendly picture-blocks; the app turns them into real Python and flies a drone through little challenges. It starts in an in-browser simulator and is built to fly a real Bitcraze Crazyflie 2.1+ when you have one — the same blocks, the same code.
No install, no sign-up, nothing to download. It runs entirely in your browser.
I'm building this with my daughter on Saturday mornings to teach her to code. The drone is the fun part; the real goal is the core ideas underneath — giving a machine a sequence of steps, planning a route ahead of time, navigating in 3D, repeating actions with loops, and reacting to the world with sensors. Each challenge introduces one of those ideas through play, and the "I wrote that, and it did something!" moment does the teaching.
What makes it click is that the blocks are real code, not pretend. Today they fly a drone in the simulator; with a Bitcraze Crazyflie 2.1+ on the desk, the exact same blocks fly the exact same drone across your living-room floor. That leap — from "it works on screen" to "it's flying for real because of what I built" — is the whole point.
It'll always be free, with no ads and no account. If other families enjoy it too, that's more than enough.
The levels add one idea at a time, and crashes are funny, not failures:
- Move & land — code makes the drone go.
- Turning — directions and sequence.
- Pick up & deliver — keeping track of a goal.
- Over & under — flying in 3D.
- Escape the walls — combining skills.
- Many paths — there's more than one right answer.
- Loops — "do the same thing again and again."
- Sensors — the drone reacts: fly until it senses a wall.
- Sandbox — every block unlocked, to invent your own flights.
A drawer quietly shows the real Python the blocks generate, growing alongside what the kid builds — so the jump from blocks to text feels natural when they're ready.
- Plain HTML/CSS/JS, no build step — open
crazyflie-blockly/frontend/index.htmlor serve it withpython3 -m http.server. - Flying a real drone: the browser sends the kid's generated Python over a
WebSocket to a small local bridge (
crazyflie-blockly/bridge/—uv sync, thenuv run python server.py), which drives the drone throughcfliband a Crazyradio 2.0 dongle. Flip the app to real drone mode and the very same blocks fly the real thing — the simulator and the drone run identical code. - Step-by-step environment setup (macOS): SETUP.md.
The simulator needs nothing. To fly for real later: a Crazyflie 2.1+ with a Flow Deck v2 (position hold) and a Multi-ranger deck (distance sensors), driven from a Crazyradio 2.0 dongle.
Made with love, for a happy Saturday. 🛸
