Example: Node.js + Angular (two-process)
A browser-only walkthrough that instantiates the environment pattern for an Express API paired with an Angular dev server — the two-process model, where the dev server proxies /api to the API and the browser live-reloads as the agent edits.
You don't build anything locally: point a CoderFlow environment at the ready-made reference app and configure it in the Web UI. This is one of several combinations in the reference-apps repo — every backend/front-end pairing is configured the same way (see the Stack reference). The PHP example shows the single-origin model.
What you'll need
- Permission to create environments in the CoderFlow Web UI. For background, see Core Concepts and the Environments reference.
- Network access from CoderFlow to GitHub — the reference repo is public, so no credentials or Git provider setup are required.
The reference app
The code lives in node-angular/ of the reference-apps repo. Two pieces define the two-process wiring:
-
api/— an Express API exposing one endpoint on port 3001:app.get("/api/hello", (_req, res) => {res.json({ message: "Hello from the Node.js API!" });}); -
web/— an Angular app whose component fetches/api/helloand shows the message.web/proxy.conf.jsforwards/apito the API, so the browser only ever talks to one origin (no CORS):module.exports = [{context: ["/api"],target: process.env.API_TARGET || "http://localhost:3001",secure: false,changeOrigin: true,},];
The rest is the standard Angular scaffold. Everything below happens in the CoderFlow Web UI.
Create the CoderFlow environment
This follows the environment pattern; the steps fill in the Node.js + Angular values.
1. Create the environment
Go to Environments → New Environment. On the Overview tab set a Description, a Default Agent, a Docker Image name (e.g. node-angular), and a Timezone.
2. Add the repository
On the Repositories tab, click Add Repository → Manual Entry and paste the public URL https://github.com/ProfoundLogic/coderflow-reference-apps. Set Branch main and a Path (the steps below assume /workspace/coderflow-reference-apps); no credentials are needed for a public repo. For Post-clone Action, choose Custom command and install dependencies for both the API and the front end (baked into the image at build time):
cd node-angular/api && npm ci && cd ../web && npm ci
There's no pre-clone script to add: the base image already includes Node.js, so there's no runtime to install. (The .NET example needs one.)
3. Configure the application server
On the Application Server tab:
- Start Command — start the API in the background, then the Angular dev server:
cd /workspace/coderflow-reference-apps/node-angular/api && node --watch index.js &cd /workspace/coderflow-reference-apps/node-angular/web && API_TARGET=http://localhost:3001 npx ng serve --host 0.0.0.0 --port 4200 --proxy-config proxy.conf.js
- Ports — add
4200(name likeweb) and3001(name likeapi). - Launch URLs — add one with Path
/on port 4200, and mark it primary.
Two processes run side by side: the API on 3001 and the Angular dev server on 4200, which proxies /api to the API. Bind the dev server to 0.0.0.0 so CoderFlow's task proxy can reach it.
4. (Optional) Agent testing and tests
On the Agent Instructions tab, under Standard Instructions, enable Screenshot Guidelines. On the Tests tab, add a command like npx ng build run from node-angular/web. See Test Definitions.
5. Build the environment
On the Build tab, click Build Now. When it succeeds, click Save, then Commit & Push.
Run and test it
- Create a task in this environment. CoderFlow starts a container from the built image; dependencies are already installed, so no
setup.shis needed. - Open the task → Testing menu → Start Server (or Start Server & Launch). See The Testing Menu.
- Click the Launch URL. The Angular page opens through CoderFlow's task proxy and shows "Hello from the Node.js API!".
- Use the in-app feedback widget to screenshot and annotate, and run any Tests you defined.
Notes
- Live reload. As the agent edits the front end, the dev server rebuilds and the browser reloads through CoderFlow's task proxy — no server restart. This edit-and-see loop is why two-process is the recommended model when you're actively iterating on the UI. The API runs under
node --watch, so it restarts automatically on backend edits too; since the page fetches/api/helloon load, click the page's Reload from API button or refresh to see a new API value. - Pointing the dev server at a remote API. Because the proxy target comes from
API_TARGET, you can set it to a remote API instead of the local one without changing code. - Serving as one process instead. For a single-process / single-host shape, the front end is served from the same origin as the API — the single-origin model, shown in the PHP example.
- Calling internal APIs over HTTPS. Load your corporate root CA so the container trusts private-CA certificates — see CA Certificates — and start Node with
--use-system-ca(or setNODE_EXTRA_CA_CERTS). Keep base URLs and credentials on the Secrets tab (Secrets).
Related
- Web Application Environments — the pattern this example follows
- Stack reference — values for other backends and front ends
- Reference apps repo — every backend/front-end combination
- Environments — full reference for every environment tab