How it's built
A static page. The generation engine runs on your device, and there is no server.
The engine runs locally
The part that actually searches through possible timetables is written in Rust and compiled to WebAssembly, then runs directly in your browser. Rankings come back from WebAssembly as raw typed arrays — no serialization of hundreds of thousands of results.
No backend
No accounts, no database, no API. The whole app is a few static files that any static host can serve, and your subjects live in your browser's own storage.
Why it matters
Generation is fast because it isn't a network round trip — every reorder or optimize happens instantly, locally, without waiting on anything.