Event Sourcing Lab 2023

Hi and welcome to the event sourcing lab of 2023 (don't worry, there will be more in 2024!). Please read the instructions carefully (yes, that includes you Fredrik!).

Prerequisites

  1. Clone this github repo.
  2. Run mvn clean install

Instructions

  1. Assemble the team
  2. Decide whether to implement single-round RPS, multi-round RPS or Mastermind.
    1. Note that the purpose of the lab is to implement an event-sourced domain model, so if you get bogged down with some game-specific details, move on to an easier project instead.
    2. The lab has two parts, remember? Do you really have enough time for the second part?
  3. Decide whether to use "functions-as-commands" or "commands-as-commands" (😉) and be prepared to furiously defend your decision.
  4. Implement and pay close attention to:
    1. Language
    2. Code quality
    3. Code readability
    4. Code testability (note that this lab is not about testing, but you should at least have an example of how you can play a complete game from start to finish)
    5. Make illegal states unrepresentable (as always!)
  5. When you feel you're ready, ping me.
  6. Bonus task: Implement a computer-simulated, commandline-based, opponent.