Hi, @gunslingor-gmailcom! Welcome to the Vercel Community 
Thanks for your patience with this. Did you manage to figure out a solution?
It looks like you could make some improvements to your project structure. Perhaps something like:
[root][root]
├── api
│ ├── index.js (your Express app)
│ └── package.json (dependencies for your API)
├── vercel.json
└── package.json (root package.json for the monorepo)
Your vercel.json file should look something like:
{{
"version": 2,
"builds": [
{
"src": "api/index.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "api/index.js"
}
]
}
This configuration tells Vercel to use the Node.js runtime for your API and routes all requests to your Express app.
Don’t forget to make sure your Express app in api/index.js is set up correctly. For example:
const express = require('express');const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
// Important: listen on `process.env.PORT` for Vercel
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
module.exports = app;
Other issues you ran into:
- Run
vercel dev from the root of your project, not from the api directory. Make sure you have the Vercel CLI installed globally (npm i -g vercel).
- If you’re not using Yarn, make sure your
package.json files (both in the root and in the api directory) have a "type": "commonjs" field. This ensures that Node.js treats your files as CommonJS modules.
- The updated
vercel.json configuration should resolve this issue. It properly routes requests to your Express app instead of serving static files.
To set up your monorepo for future expansion (GUI, native, shared modules), you can create additional directories at the root level:
[root][root]
├── api
│ ├── index.js
│ └── package.json
├── gui
├── native
├── shared
├── vercel.json
└── package.json
You don’t necessarily need to use Turborepo for this setup, although it can be beneficial for larger monorepos. The current structure should work well with Vercel.
Let us know how you get on!