Skip to content
Greg Bowler edited this page May 11, 2026 · 5 revisions

Almost every language or framework ends up with a to-do list tutorial somewhere. The reason is simple: it exercises just enough of the stack to be useful without becoming overwhelming.

Here, the to-do list introduces form handling, state, repeated output, and a little application structure.

What we'll build

This version keeps persistence simple by storing the list in the session. That lets us focus on the WebEngine workflow before adding a real database.

The tutorial introduces:

  • form handling
  • session-backed state
  • list rendering
  • a small model represented by application classes

Build stages

The normal flow is:

  1. add a form to create items
  2. store the items in the session
  3. represent them with application classes
  4. render the list back into the page
  5. add actions to mark complete or remove items

This is usually the point where the value of thin page logic becomes very clear, because the page needs to coordinate several actions while still staying readable.

Taking it further

Once the session-backed version works, it is worth asking what changes if the list must be shared between multiple users or survive beyond one browser session. That naturally leads into a database-backed version, which is where the address book tutorial goes next.

If you want to approach the same tutorial with tests first, there is also a todo list TDD tutorial.


We'll build on the code introduced in the todo list to build a full database-backed application in the address book tutorial. There's also an extension of this tutorial that adds testing from the start in todo list TDD tutorial.

Clone this wiki locally