Backend - Node.js

Node.js for speed and realtime.

BFF, events and lean services - where PHP is not the right process. No "everything in Node.js because it is a trend".

BFF Realtime Services Queues

Where Node.js makes sense

When the edge is about live data, aggregation or a JavaScript team.

BFF for SPAs

Vue/Angular should not orchestrate twelve PHP endpoints. A BFF tidies that up.

Realtime

Status, chat, collaboration. We replace constant polling where it pays off.

Micro slices

One service for webhooks or PDFs - not the next monolith in green.

JS-heavy teams

One stack less to keep in mind. We still keep clear boundaries to the domain.

What we deliver in Node.js

Lean, observable, replaceable.

BFF & APIs

Aggregation, auth pass-through, caching. OpenAPI where it helps.

Realtime

WebSocket or SSE - with fallbacks and load limits.

Workers

Queues, webhooks, file jobs. Visible retries.

Platform

CI, containers, logs, health checks. No laptop deploys.

Approach: Node.js as an edge, not as the whole world

Many of our clients stay on Symfony or Laravel. Node.js sits in front of it or next to it - clearly scoped.

  • Define the job of the edge (BFF, event, worker)
  • Write the contracts towards PHP/Python services
  • Build in observability and limits
  • Handover with a runbook

Typical environment

Node.js 20+, often TypeScript, Fastify/NestJS only if the team can carry it. Alongside Vue/Angular and PHP APIs.

How we scope Node.js services

One job, one process, clear owners.

1

Define the edge

What Node.js may do - and what stays in PHP.

2

Slice

One endpoint or one socket flow in staging.

3

Hardening

Auth, rate limits, load, dead letters.

4

Operations

Metrics, alerts, docs.

What you can rely on

No quiet change of platform.

The boundary holds

We do not quietly move the whole domain into Node.js.

TypeScript in moderation

Types on the contracts, not 200 utility files.

Ongoing support

On-call available through maintenance.

Example setup (illustrative)

BFF in front of a Vue dealer portal: aggregates Symfony APIs, caches listings, pushes status via SSE. Goal: fewer roundtrips, noticeably faster lists.

Frequently asked questions

Without runtime holy wars.

Why not everything in PHP?

Some edges are more honest in Node.js: BFF, realtime, JS tooling. The domain can stay in PHP.

Nest, Express, Fastify?

Whatever your team maintains. We prefer lean over enterprise appearance.

Is TypeScript mandatory?

For public contracts, yes. For an 80-line worker, negotiable.

Serverless?

When load and cost fit. Otherwise a small service in the cluster.

Do you take over existing Node.js code?

Yes, after an audit (dependencies, secrets, event loop sins).

How do we start?

One BFF slice or one worker. Fixed scope.

More stacks

Related technologies we often use alongside.

A clear Node.js edge?

Tell us what has to be live or aggregated - we propose the smallest service that makes sense.