You can either use decentralized metadata (e.g. IPFS) but this comes at a higher cost for minting or you can use a centralized approach.
For the tutorial I just my-json-server but for production you would likely want a more robust approach of having a server for your JSON metadata. Which is not something I have done yet.