write code with a functional core and an imperative shell

what this just means is to push all input/output to the boundary

functional core: simple data structures and logic

imperative shell: handle all data io at the boundaries

this is a nice image explaining it

questions to trigger

  • what are your domain models?
  • what logic do you apply to them?
  • can you easily swap out things you want to swap out?