I'm wanting to build a section of a website where users would be able to upload files (e.g. game mods) and other users will be able to download them.
I want this to be able to scale and host thousands of files with thousands of users, so how would I go about creating this and what would be the best architecture for this? I'm building the backend with NodeJS and Express.
First, to scale, you need to separate the file storage from the API. You can use an Azure Storage Account, AWS S3 or another cloud storage solution.
Then, to minimize the scalability configuration on the backend, you can use Serverless Functions, available on all major cloud providers too.
If you need to maintain the convencional Express API, you can use a PaaS service for NodeJS, which will make the deployment easier.
You can make all that on-premises or in a VM too, but it will remove all the out-of-the-box benefits.