I found something like this to be most flexible.
/root
../src
../../client (entrypoint for client, rehydrates react tree/etc)
../../server (entrypoint for server, spins up db, express, etc)
../../blog
../../../common (react components, graphql typedefs)
../../../../components
../../../../routes
../../../server (graphql resolvers, other stuff that only runs on server)
../../../../resolvers
../../user
../../../common
../../../../components
../../../../routes
../../../server (authentication logic, express middleware, gql resolvers for store, etc )
../../../client (browser cookie/local storage logic)
../../layout (sitewide react components, IE: PageHeader, NavBar, etc)
../../ui (reusable sitewide micro-components ie: Button, Modal)
note: ./layout and ./ui don't have "server"/"common"/etc divisions because they purely in a single domain (common) so I just put their contents at the root instead of ./layout containing a single folder.
Obviously it depends on the complexity of your site. But I find this allows me to seperate different aspects of the site (ie: a blog, and a user portal) and break them down into client/common/server. you probably end up with multiple folders named "client" or "common" in your tree but I think that's of minimal concern.