This question is asked and re-asked perpetually. The fundamentals have been solved many times over using features obsidian has had for a long time.
Ultimately, you’ll need to build your own system - taking the best of what other people have already figured out.
Zolt’s classic post on what you’ve asked is still a great place to start.