Monorepo managed with npm workspaces.
apps/
api/ Express + MongoDB backend (@scripture/api)
web/ React + Vite frontend (@scripture/web)
npm install # installs deps for all workspaces from the root
cp apps/api/.env.sample apps/api/.env # fill in real valuesnpm run dev # runs api + web together
npm run dev:api # backend only
npm run dev:web # frontend onlynpm run build # builds the frontendRun any workspace script with -w:
npm run <script> -w @scripture/api
npm run <script> -w @scripture/webAdd a dependency to a specific workspace:
npm install <package> -w @scripture/webapps/web(frontend) deploys to Vercel. Root Directory:apps/web.apps/api(backend) deploys to Render. Root Directory:apps/api, Start Command:npm start.
Both platforms build/run only the app in their configured root directory, so each app's own package.json scripts and .env.sample are the source of truth for that app's environment variables.