Backend engineers who keep the API up when traffic stops behaving.
APIs, data models, queues, auth and the scaling calls most teams get wrong, handled by engineers who've run this in production, not just read the docs.
What "knows backend" means here
Depth, not a list of buzzwords.
Six calls we make on every backend build. Open any one, each is a decision our engineers make and can defend on a real system, not a line on a CV.
01 · API design
Versioned APIs that don't break the clients you already shipped.
New fields are additive, breaking changes get a new version, and every response is a typed contract the client can rely on, so a mobile app three releases behind still works.
02 · Data
Schema changes ship as migrations. Never by hand.
Every schema change is a versioned, reversible migration that runs in CI before it touches production. No manual ALTER TABLE on a Friday afternoon.
03 · Auth
Authorization at the boundary, not sprinkled through the code.
Authentication and authorization live in one place, middleware and policies, so every route is protected by default and access rules are auditable, not scattered across controllers.
04 · Jobs
Slow work moves to a queue. The request stays fast.
Emails, exports, and third-party calls run as background jobs with retries and dead-letter queues, so a slow dependency never blocks the user's request.
05 · Observability
When it breaks at 3am, the trace already says where.
Structured logs, metrics, and distributed traces are wired in from day one, so an incident starts from a trace ID, not from guessing which service is slow.
06 · Scale
Caching and pooling before a rewrite.
Connection pools, query indexes, and a cache layer come first, most "we need microservices" problems are a missing index or an N+1 query, and we find that before splitting anything.
Ecosystem awareness
We track what actually changes in this stack.
Pick the situation you're in. These are the scenarios we get asked about most.
Node / TypeScript
We build Node services in TypeScript on Nest, Fastify, or Express, chosen for the team, not the trend. Dependency injection where it earns its keep, plain modules where it doesn't, and a layout a new engineer can navigate on day one.
Monolith → services
We split monoliths along real seams, a boundary that already exists in the data and the team, not because a blog post said microservices. Extraction happens one service at a time, behind a stable API, so the monolith keeps serving traffic during the move.
Postgres & SQL
Postgres by default, with Prisma or Drizzle for typed queries and migrations, or raw SQL where the query needs it. Indexes designed around the access pattern, pooling for serverless, and read replicas when the read load actually asks for them.
Event-driven & queues
Kafka, SQS, or Redis streams for work that shouldn't block a request. Idempotent consumers, retries with backoff, and dead-letter queues so a poison message doesn't take the pipeline down, with the whole flow observable end to end.
How hiring works
Four steps to a developer who's shipped this stack.
Tell us your stack and scope
Language and framework, the data store, greenfield or existing service, timeline.
We match a developer
Someone who's actually shipped your scenario, usually within 5 days.
Technical trial or pairing
A real ticket or a pairing session on your codebase, not a whiteboard puzzle.
Start shipping
They join your repo and workflow and commit in week one. Scale monthly.
Straight talk
We won't put an engineer on your backend who's never run one in production. If we don't have the right fit available, we'll tell you, and point you somewhere honest, instead of stretching someone thin across three systems and hoping the pager stays quiet.
FAQ
Node and backend, specifically.
Either. Most of our backend work is joining an existing service, we read the code, match your conventions, and ship inside your existing patterns before proposing any changes. Greenfield is welcome too; we just won't rebuild something that already works to scratch an architecture itch.
Yes. They work in your repo, your branching model, your CI, and your review process. Pull requests get reviewed by your team the same as anyone else's, and you own the code from the first commit.
Yes, monolith to services, Express to Nest or Fastify, and major version and Node runtime upgrades. We do it incrementally wherever the codebase allows, so you keep shipping features during the move instead of freezing for a big-bang rewrite.
Both. If you already have an opinion, Postgres, Nest, a specific queue, we build to it. If you don't, we'll recommend a stack for the workload and explain the trade-offs so you can sign off, rather than deciding silently.
The trial period is on us. If it isn't working, you don't pay for it and we match you with someone else, or we part ways. No lock-in, month-to-month after the first month.
Node seat?
Ready to hire.
Send the JD. Vetted Node CVs in 48 hours, trials this week, on your backend sprint next.