Engineering / Efficiency

The whole app is 96 KB.

In today's world of bloatware, we're proud to ship what is probably the most compact timetable generator there is. Everything you download to use Lattice — the engine, the interface, the styles — is smaller than a single photo from your phone.

96 KB
the entire app, as downloaded
10 bytes
per complete timetable, in memory
0
servers, accounts, cookies, trackers

Native code, in your browser

The timetable engine is written in Rust and compiled to WebAssembly, which your browser turns into native machine code — no interpreter, no garbage-collected runtime between the algorithm and the CPU.

It generates over half a million valid timetables per second in the browser, and over 750,000 per second natively. A real five-subject selection — 19,638 valid timetables — is done in about 36 milliseconds, just over two frames of a 60 Hz screen.

10 bytes per timetable

Each subject has only a handful of distinct ways it can be scheduled. The engine computes those once, and stores every result as one 16-bit number per subject — an index into that small list — instead of copying teachers, venues, and slots into every timetable.

A complete five-subject timetable costs 10 bytes. All 19,638 of them fit in under 200 KB of memory. Ranking them all by idle time takes about 4 milliseconds.

What you download

Part Size (compressed)
Timetable engine (Rust → WebAssembly) 68.6 KB
Interface, guided tour and paste reader (Preact + TypeScript) 20.7 KB
Styles 4.2 KB
Page 2.4 KB
Install + offline support 0.7 KB
Total 96.5 KB

Measured on the production build, Brotli-compressed the way modern static hosts serve it (1 KB = 1,024 bytes).

What isn't there

  • No server. Not a fast server — none at all. Lattice is a few static files.
  • No database, no account, no sign-in. Your subjects live in your own browser.
  • No cookies, no analytics, no trackers, no ads.
  • No web fonts, no icon library, no UI framework bundle. The eight icons are drawn inline; dialogs, dropdowns, and popovers are the browser's own.
  • One runtime dependency. Preact, at about 6 KB.

Why it matters

  • Small code loads fast on a weak phone and a crowded hostel Wi-Fi.
  • Nothing to wait on after it loads — every generate, re-rank, and preference change runs on your device.
  • Install it like an app, and it opens with no internet at all.
  • Nothing to break, leak, or go down. There's no backend to have an outage.