What happens before a lesson reaches your class, and what happens while students use it.
A teacher suggests a lesson, or one is planned as part of a course. Each lesson is written as a plain text file: the explanation, the code, the questions and the teacher notes all live together.
Before anything goes on the site, a set of automatic checks runs. Every model answer has to pass the same check students' work is held to, and every question has to have a correct answer. We're also adding checks that a lesson doesn't use ideas that haven't been taught yet. The short clips are then recorded automatically, by playing through each example in a browser, so they always match the lesson. The teacher guide, slides and worksheet are generated from the same file, so they never drift out of step with it. A person reviews every lesson before it's published.
Everything runs in the student's browser. Their code runs on their own device, not on a server. Progress is saved only in that browser, there are no accounts, and our pages send nothing anywhere. If a student changes computers or clears their browser, their ticks start again, but the lessons are always there.
A few lessons open tools made by others, such as Microsoft MakeCode for micro:bit and Arcade, or Google's Teachable Machine for training a model. Those tools load from their own sites and follow their own privacy terms; the lesson tells you when one is used.
Some later Python courses run real Python libraries in the browser, which means a larger first download and, for a few lessons, live data from other sites. School filters differ, so before teaching them, check your school on a student device.
Because each lesson is one text file, fixing a typo or adding a question is a small change that's easy to review, and the clips, slides and worksheet update with it. If you spot something that could be better, let us know.