Data models

Resource IDs

We are using nominal typing to ensure that our IDs are typed per resource.
It allows our function parameters to be strongly typed and make sure TypeScript will raise an error if a TeammateId is used instead of a ConversationId.

Behind the scene, our IDs are simple strings.