I need a way of doing a quest system

So I’m making a quest system (for fun), and I had an idea of doing it, but since I am a perfectionist I need a strict way that I know is efficient and won’t cause me any problems. I wanted to have like a module with quest names equal do a table of values such as Exp you get, Money, etc…
Now to detect a player doing the actual quest, I was thinking that when I accept a quest a number value is parented to me, and it’s value will increase after I do that certain thing. And the amount the number value requires so you complete the quest is determined by the module. Is that a good approach to all this or is it garbage? I need a smart dude ASAP :sob: