The evolutionary path is: monolithic backend-web-framework-based repo -> multi repos with shared infra -> monorepo contains shared infra
The tool support is becoming matured (Yarn Workspace, VSCode's Multi Root Workspaces)
[monorepo]/
├── universal-js-app project for product A/
│ ├── node_modules/
│ ├── common/