For a business-grade product, one “simple” solution is to give each client their own table in a share db instance. The schema is shared among all users, and the rest or graphql calls from the client/middleware can easily accommodate this by using subdomain aliasing. It’s straightforward so long as your DevOps is programmatically managed, like in Terraforms.