I'd add that the "hire a contractor to build things out" thing works well for an easily defined thing like a cafe, but much less so for a web application. If the contractor is honest, the first thing they'll say when you try to fix the price is:
"I don't know what you're trying to build (even though we've spent an hour talking about it). That's in great part because you don't know what you're trying to build. We'll find that out as we go along, once we get some users in front of it and figure out what they really want. Therefore, it would be dishonest of me to quote a likely cost. I can timebox it for you: It will take less than two years, and more than a month. But that's all the accuracy I can give you. I can also tell you how long it's likely to take to build the first iteration - but not how many more iterations there will be after that."
Unfortunately, most contractors won't do that and so you'll find yourself with an ever increasing bill or with a piece of useless code.
"I don't know what you're trying to build (even though we've spent an hour talking about it). That's in great part because you don't know what you're trying to build. We'll find that out as we go along, once we get some users in front of it and figure out what they really want. Therefore, it would be dishonest of me to quote a likely cost. I can timebox it for you: It will take less than two years, and more than a month. But that's all the accuracy I can give you. I can also tell you how long it's likely to take to build the first iteration - but not how many more iterations there will be after that."
Unfortunately, most contractors won't do that and so you'll find yourself with an ever increasing bill or with a piece of useless code.