My version of the project in Chapter 12 of Dave Thomas' "Programming Elixir" book.