Skip to content

Toolset · TypeScript, Prisma, BullMQ

Node / Express

  • Node.js
  • TypeScript
  • Express

A TypeScript Node backend. Express for the minimal, unopinionated core (or Nest when a team wants structure and DI), with typed data access, schema validation, and a real queue.

Where two tools compete, the one marked our default is what we reach for.

01

Package manager

1 tool
pnpmour default

Fast, strict, disk-efficient. Our default.

02

Framework & DI

3 tools
Expressour default

Minimal, ubiquitous HTTP framework. Our default for small-to-mid services.

Structured, opinionated framework with first-class DI and modules — the pick for larger teams.

@Injectable()
export class UserService {
  constructor(private readonly repo: UserRepository) {}   // constructor DI
}

@Module({ providers: [UserService, UserRepository] })
export class UserModule {}

High-performance alternative to Express with schema-based validation.

03

ORM & validation

3 tools
Prismaour default

Type-safe ORM with migrations. Our default.

SQL-first typed query builder.

Zodour default

Validate request bodies, env, and boundaries. Our default.

04

Queues & async

1 tool
BullMQour default

Redis-backed job queue with retries and rate limiting; carry IDs, make jobs idempotent (see the job contract). Our default.

05

HTTP & logging

2 tools

The fast HTTP client under Node's fetch. Our default.

Pinoour default

Low-overhead structured JSON logging.

06

Testing

1 tool

Unit tests and HTTP-level integration tests. Our default.

07

Monitoring & observability

3 tools
Sentryour default

Error and performance monitoring with Express middleware. Our default for errors.

OpenTelemetryour default

Vendor-neutral traces, metrics, and logs; auto-instrument HTTP and DB, export anywhere. Our default for tracing.

Prometheus metrics (histograms, counters) exposed at /metrics for scraping.

08

CI/CD

4 tools
GitHub Actionsour default

Test, lint, and build the image on every push. Our default CI.

Dockerour default

Containerise the service for a reproducible deploy. Our default.

Push-to-deploy container hosting close to your users.

Process manager for VM deploys with clustering and zero-downtime reload.

09

Linting & formatting

4 tools
ESLintour default

Linting with typescript-eslint for a TS backend. Our default.

Prettierour default

Consistent formatting. Our default.

Fast single-binary lint + format alternative.

tsc --noEmit as a type gate in CI.

Building on Node / Express?

We ship production Node / Expresswith exactly this stack. Tell us what you're building.

Start a conversation