The more I watch Rick's sessions from 2017, 2018 and 2019, more confused I get - so I guess I'd write it down.
There are 3 core steps (some have more, I want to stick to 3) to create a decent model that works well:
- Understand the usecase + create ERD(list entities and relations)
- Identify the access patterns - R/W workloads, query dimensions and aggregations
- Data modeling - avoid relational patterns, use 1 table(if there aren't any "documents", 1 should be fine)
- R.R.R = Review > Repeat > Review (go on till it makes sense)
Before creating all possible DB tables (and entities) and creating the relationships amongst those, I started off with a small list of entities = 4.
There would not be any "Manual" sign-up/login, rather the login/signup would be through GitHub (initially) and other providers would be added (OAuth2 primarily).
With each new "Login using GitHub" a new session would be created, and the client/browser/mobile will receive a "token", using which further requests will be processed.