- Start from dummy main and imports/pragmas prefilled
- let's write a REST server to manage pets -> main with port, call startServer
- startServer run port application
- write application
- decompose runServer into runServant + runEFf
- implement handlers as pure ()
- compile and run the app
- write a test -> addPet returns [thePet]
- model business logic as an Eff -> BusinessLogicEffect -> AddPet precanned answer
- write a test to add a second Pet -> fails, we need a store
- model the store using an MVar + map of ByteString with encode
- thread the Store in runEff
- change tests to return a Right -> we want to handle errors in Storage
- write a test for failing store
- implement filaing store as an alternative effect
- scaffold Servant
- types for PetStore (Pet,encode...)
- start at the point where we make a request
- verbalise the fact people asked about Servant + Eff