<aside>
*Render does not allow background workers on free tier → devmetrics-worker needs to be paid version
worker runs in the same process as the API
code changes: add require('./workers/syncWorker'); into server/src/index.js
https://dashboard.render.com/project/prj-d9khgsvavr4c73bmid70
server/src/index.jspull in the worker module so it starts alongside Express instead of running as a separate process
const express = require('express');
require('dotenv').config();
// mongoose connection, middleware, routes, etc.
// Start the BullMQ worker in-process (merged for Render free tier)
require('./workers/syncWorker');
const app = express();
const PORT = process.env.PORT || 3001;
app.get('/health', (req, res) => res.json({ status: 'ok' }));
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
VITE_API_URL — new Render URL (https://devmetrics-api-XXXX.onrender.com)
update:
github.com/settings/developers → https://devmetrics-api.onrender.com/api/auth/github/callbackRAILWAY_TOKEN in GitHub Actions secrets is no longer used — you can delete it, or leave it unused if you're not worried about clutter. You won't need a RENDER_API_KEY replacement unless you want a CI-gated deploy step; by default Render redeploys automatically on every push to main, so most people just drop the deploy-server job entirely.
update .github/workflows/deploy.yml
This file still has the old deploy-server job pointing at bervProject/[email protected] with RAILWAY_TOKEN. Since Render auto-deploys on push by default, the simplest fix is to delete that job entirely — Render will pick up the push to main on its own. If you'd rather keep a CI gate (so a lint/build failure blocks the deploy), replace it with a curl to a Render deploy hook instead. Either way, commit and push that workflow change too.
</aside>