In order to design systems that are as clear as possible, I like to start with their underlying foundational types.

In this app, we'll be dealing with a few different types of data related to the state of the game:
- the cities and their locations on the map
- the train routes (single and parallel) that connect between two cities (their colors, number of spaces, etc.)
- the players, the routes that they own, and the number of points they have
The game's rules and board define the game system. Our types model that system as data structures.
Essentially, we're executing our app using the same data that the game's rules and board are executed with when we play the game in the real world.
In order to design systems that are as clear as possible, I like to start with their underlying foundational types.
In this app, we'll be dealing with a few different types of data related to the state of the game:
The game's rules and board define the game system. Our types model that system as data structures.
Essentially, we're executing our app using the same data that the game's rules and board are executed with when we play the game in the real world.