Real-world CLI application example

Hi every! I’ve decided to write a small application with a friend this weekend, and the result happened to be quite good, so I want to share it with you.
Technically it’s not real-world, but the architecture is quite scalable, so I thought it might be useful for some ReScript beginners.

Some interesting points:

  • Using Finite State Machine for transitions between application state
  • Runtime contracts on the boundaries of the application
  • Completely uncoupled application and render logic, so it’s super easy to make it work in the web instead of CLI
  • Using dependency inversion principle to make application logic more testable
  • Using abstract types for domain entities