chapter 10 of the 2nd book
in the Real Python course