I recently completed the 6th GUI task in LiveView 🎉 - a Circle Drawer with undo/redo functionality.
I wrote a post about the implementation and some decisions I made, and I hope others find it interesting!
One of the most interesting things was that the task was meant to be a challenge of undo/redo functionality:
“In an ideal solution the undo/redo functionality comes for free… just comes out as a natural consequence of the language / toolkit / paradigm.”
When it came time to implement the undo/redo functionality, I was happily surprised that the solution definitely “came for free” because of Elixir’s functional paradigm and LiveView’s reactivity.
In the end, the undo/redo functionality was the easiest part of the whole task!