Skip to content

parent-tobias/pubsub-todo-app

Repository files navigation

Todo App

Revisiting the Odin Project's Todo App, with an eye towards abstraction and separation. Specifically, I wanted to work from the idea that the entire app is a Collection, holding a number of "projects" which are, in themselves, also Collection things. Each of those projects collect Todo objects.

But Collection objects are also Observables. That is, we can subscribe to particular actions on them: "add", "remove" or "update". What does that do for us? We can tell the root Collection that we want to listen for its messages, and perform "side effect"-y manipulations outside of the data structure.

  • We can update the DOM, displaying the changes to the collection.
  • We can send the Collection to a backend service, synchronizing to another user.
  • We can store the Collection locally, using localStore or IndexDB.
  • We can add sound effects, when a delete or add has happened.

By making the collections observable, we can subscribe to them and cause certain behaviors using the data, outside of the data.