Node.js, Nest.js and React — for the systems where being wrong is expensive.
Every agency on the internet claims this stack — React on Vite or Next.js, Nest.js on Node.js, TypeScript throughout. So judge the work instead: money movement, regulated onboarding, live market data, operational platforms people sit in all day. The same stack — applied where mistakes cost money.
FACT 01RAKBANK, a UAE retail bank, had our engineers build its digital onboarding journey in React — on-site in Dubai, inside the bank’s own review and release process.
FACT 02A browser trading terminal we built keeps custom charting, live feeds and one-click order entry responsive together under burst load.
FACT 03A 14-year Go backend, rewritten to Node.js in six months with the system in service — against a typical two-year quote.
30 minutes, working session. You leave with a one-page read of your codebase either way. Nobody follows up more than once.
@@ 02 / CONDITIONSAS FOUND
The second year of a Node and React codebase
Starting a project with this stack is easy. These are the conditions that arrive later, and they are the ones we are usually hired for.
WRITE PATH
The endpoint nobody will touch
Four hundred lines, three responsibilities, no tests — and it is on the payment path. Everyone routes around it. Every quarter someone estimates fixing it, and the estimate gets cut.
RENDER
Fast on your laptop
Then a customer with a real dataset opens the list view and the browser stops. Nothing is virtualised, every render recomputes, and the profiler has never been opened because there was always a feature due.
CAPACITY
The roadmap is bigger than the team
Two open positions for five months. Every senior engineer is now a reviewer and an interviewer, so output went down while the headcount plan says it went up.
RELEASE
Releases need a person
A checklist in a document, a manual smoke test, an unwritten rule about Fridays. The batch gets bigger, the risk per release goes up — slow and scary at the same time.
TYPES
Types stop at the boundary
The API returns a shape the front end believes is a different shape. TypeScript is on, and both sides are lying to each other in a way that only shows up for the customer with the unusual data.
IDEMPOTENCY
The retry that wrote twice
A gateway timeout, a client retry, one operation applied twice. Small enough to absorb, large enough to prove the write path was never idempotent — and once you cannot trust the data, you cannot trust anything built on it.
Where this work comes from
Rooms where money movement is the agenda
Embedded Finance, San Francisco. Most of what this page argues — idempotent write paths, contract tests, a release you can roll back — came out of building for people whose product moves other people’s money. FinTech & banking at Fluvius →
@@ 03 / PROOFMERGED
What this stack has shipped here
Four pieces of work, stated flatly. Each links to its own case page.
A compliance-grade customer onboarding journey, written on-site alongside RAKBANK’s own engineering team — in the bank’s environment, its review process and its release path. The hard part is not the form. It is that every step of the journey is also a control, and the code is read by bank reviewers before it ships.
Shares, futures and forex: one-click order entry, custom charting, live feeds — in a browser. The hard part is burst load: keeping charts, feed and order entry responsive together, and making reconnect behaviour honest, so a stale price is never presented as a live one.
A donation platform for media: React and TypeScript on the front, Node.js and MongoDB behind, Stripe and PayPal in the write path — plus a Chrome extension that has to behave inside pages we do not control. Built from zero to a working beta the client could put in front of real donors.
We built the React front end and the product layer of a multi-role real-estate platform: owners and managers on profitability, pricing and leases; tenants on search, requests and payments. An operational surface people use all day cannot make them wait — that is a front-end engineering constraint, not a design preference.
Bring the part of your system you are most tired of. We will tell you what we would do first.
Live charting — FinaMarkSysCustom charting that has to stay responsive while the feed and the order book update underneath it, in a browser, under burst load. FinaMarkSys case →
@@ 05 / SCHEMATICINTERACTIVE
One slow handler, one ruined p99
Node serves every request on one thread. Synchronous work in a handler — a big JSON parse, a crypto call, a loop over too much data — blocks all of them. Drag the slider and watch the queue grow while the average still looks fine. This is the most common Node mistake in production, and code generators ship it silently.
SCHEMATIC MODEL — 40 REQ/S ARRIVING, 25 MS ASYNC I/O EACH. NOT A BENCHMARK.LOOP: HEALTHY
THE EVENT LOOP, ONE PROCESS
WHAT THE DASHBOARD SHOWS
MEAN
33 ms
P95
45 ms
P99
58 ms
The mean is what the status page shows. The p99 is what your best customer feels.
Nobody notices the app. This is what healthy looks like.
The fix is rarely exotic: move the work off the loop, stream instead of buffering, paginate the query, or measure before arguing. This is the discipline behind the trading terminal staying responsive with live feeds and order entry on one screen.
@@ 06 / SCOPETYPICAL RANGES
The work, as we actually sell it
Timelines are indicative ranges and depend on scope.
Embedded senior engineers in your repo
STARTS IN 2–3 WEEKS
Your process, your conventions, your review path — the RAKBANK pattern. You get engineers, not a managed layer between you and them.
A product built end to end
10–20 WEEKS
React with Vite or Next.js on the front end, Nest.js API on Node.js, database, integrations, CI/CD. Architecture signed off by a senior architect before development starts.
The subsystem nobody wants to touch
4–10 WEEKS
We take the endpoint, the module or the service everyone routes around, put tests around its current behaviour, then change it.
Front-end performance work with numbers attached
3–8 WEEKS
Profiling, list virtualisation, bundle and render work with Vite, third-party script audit. Before-and-after measurements on your own data, not a lighthouse screenshot.
API and contract work
4–10 WEEKS
Versioning that lets old mobile builds keep working, generated types shared between client and server, contract tests, idempotent write paths.
Staged migration off something old
12–26 WEEKS
Module by module, tests pinning behaviour that must stay identical, system in service throughout — the Go-to-Node pattern.
@@ 07 / DEFAULTSUNLESS YOU SAY NO
Defaults we ship unless you tell us otherwise
None of these are exotic. All of them are the difference between a codebase that ages and one that decays.
WRITE PATHS
Idempotency keys on anything that moves money or state — a retry must be a no-op, not a second write.
BOUNDARIES
DTO validation at the edge, and types generated from the schema so the front end cannot drift from the API.
NEST DISCIPLINE
Business rules live in providers, not controllers — the thing that decides whether a Nest codebase ages well or becomes a decorated mess.
OBSERVABILITY
Structured logs with a correlation id that survives a queue hop, and dashboards on p95/p99 — the mean flatters everyone.
SHUTDOWN
Graceful shutdown with in-flight request draining, so a deploy is not a tiny outage.
RENDER COST
Long lists virtualised, memoisation where the profiler says so — and not where it is superstition.
CONTRACTS
Contract tests and API versioning, so yesterday’s mobile build keeps working after today’s deploy.
RELEASES
CI that deploys, feature flags for the risky half, and a rollback that is a button rather than a meeting.
TESTS
Automated coverage around the journeys that carry money and data first — not a coverage percentage for its own sake.
HANDOVER
Your conventions, your lint rules, decisions documented — code your team can read after we leave.
@@ 08 / OBJECTIONSANSWERED PLAINLY
What you are probably thinking
“Everyone does React and Node.”
True — which is why this page leads with what the stack was used for. Onboarding built inside a retail bank, a trading terminal under burst load, an operational platform a property business runs on. That is not the same skill as building a marketing site.
“Our codebase is a mess and I’m embarrassed by it.”
Most codebases we are handed are. It is the normal state of software that shipped. We start with a written read of what is there — architecture, risk, what is safe to change first — and you keep that document whatever you decide.
“Will your code look like ours?”
Yes, deliberately. We adopt your conventions, your lint rules and your review path, and we do not introduce a framework or a pattern your team has not agreed to. A codebase nobody in-house can read is a liability, not an upgrade.
“We tried an outside dev shop and it went badly.”
Usually the same three causes: no senior person accountable, a demo-grade codebase, and a handover that never happened. Here you get direct access to the engineers doing the work, no account-manager layer, a senior architect signing off every project, and tests and documentation as part of the deliverable rather than a phase that gets cut.
“You’re in Europe.”
US entity — Fluvius USA Inc, Sacramento, California — US contracts and US payment terms. EU hours with US-morning overlap, so a written handoff is waiting at the start of your day. And the on-site bank work is on the record.
“We’d rather hire.”
Then hire — it is usually the right answer for a permanent core team, and we will say so. We are the better answer when the work has a boundary: a subsystem, a migration, a burst of capacity, or a capability you do not want permanently on payroll.
The screen they sit in all day
Operational software cannot make people wait
Owners on profitability and leases, tenants on requests and payments, four systems with four update rhythms behind one surface. Keeping that responsive is a front-end engineering constraint, not a design preference. UnitBeat case →
Many of our clients have been with us for 7+ years straight. The Upwork and Clutch records are independently verifiable.
Custom charting in a browser — trading terminalIndicators applied over a live feed while order entry stays responsive. Every one of these is a render path that has to hold under burst load. Trading platform case →
@@ 10 / ARTEFACTKEEP EITHER WAY
Not ready to talk? Take the checklist.
One page, 16 questions about your Node and React codebase you should be able to answer in under a minute — whether your write paths are idempotent, what blocks the event loop, where your types stop, how a release is rolled back, what p99 looks like against the mean, and which journeys have automated coverage.
@@ 11 / NEXTONE STEP
Show us the part of the system you are most tired of.
A free 30-minute working session, not a sales call. We tell you what we would do first and what it would cost to be wrong. You keep a one-page written read either way — the risk we would attack first, the tests we would write before touching anything, and the two things we would leave alone.