Kanban board

Every column is an async component built with jsx-async-runtime which loads its own tasks from this.store. The server renders the first page with a store that reads a cookie. After a change, the browser renders the changed columns with the same components and a store that fetches the tasks from an API.

Turn off JavaScript and the board still works: the buttons submit plain forms and the server renders the whole board. The note under each column shows where it was rendered.

Todo

2
  • Turn off JavaScript and try again
  • Drag a card to another column
rendered in the server at 00:17:06

Doing

1
  • Render it in the browser
rendered in the server at 00:17:06

Done

2
  • Write a JSX component
  • Render it on the server
rendered in the server at 00:17:06