Languages & Runtimes API Frameworks & Standards Messaging & Event Streaming Databases, Relational Databases, NoSQL & Cache Authentication & Security

Our backend stack is polyglot by intent, we select the language and framework appropriate to each workload rather than applying a single stack to every problem. Node.js for high-concurrency API layers, Python for AI and data workloads, Go for performance-critical services, and Java or Spring Boot where enterprise integration and long-term maintenance are the priority.

Focus 01

Languages & Runtimes

Node.js and Python cover the majority of our API and AI workloads, with Go brought in for services where sub-millisecond latency and efficient resource use are hard requirements. Java and Spring Boot remain the standard for enterprise integration work, and we work in Rust, .NET, and Elixir when a client's existing infrastructure or performance profile calls for it.

Technologies we use
Node.js / Bun Python 3.11+ Go (Golang) Java 21 / Spring Boot 3 Rust Ruby on Rails .NET / C# Elixir / Phoenix Kotlin (server-side)
Focus 02

API Frameworks & Standards

FastAPI and NestJS are our defaults for Python and Node.js API layers, both giving us strong typing, auto-generated documentation, and high throughput out of the box. REST with OpenAPI documentation is our standard for external-facing APIs, gRPC handles internal service-to-service communication where schema validation and latency matter, and GraphQL comes in for products where client-driven query flexibility is worth the added complexity.

Technologies we use
FastAPI (Python) NestJS (Node.js) Express.js gRPC GraphQL / Apollo REST (OpenAPI 3.x) tRPC Hono Django REST Framework
Focus 03

Messaging & Event Streaming

Apache Kafka is our default for event-driven systems that need durable, high-throughput message streaming between services, and RabbitMQ handles simpler task-queue patterns well. Cloud-native options like AWS SQS/SNS, Google Pub/Sub, and Azure Service Bus come into play when a client is already committed to a specific cloud provider's ecosystem.

Technologies we use
Apache Kafka RabbitMQ AWS SQS / SNS Google Pub/Sub Redis Streams NATS Azure Service Bus Apache Pulsar EventBridge
Focus 04

Databases, Relational

PostgreSQL is our default relational database, chosen for its reliability, its extension ecosystem including pgvector for AI workloads, and its operational maturity. Managed services like Amazon RDS/Aurora, Google Cloud SQL, and Azure SQL Database handle the operational overhead, and CockroachDB or PlanetScale come in when a project needs distributed, horizontally scalable SQL.

Technologies we use
PostgreSQL MySQL / MariaDB Amazon RDS / Aurora Google Cloud SQL Azure SQL Database CockroachDB PlanetScale Supabase Neon (serverless Postgres)
Focus 05

Databases, NoSQL & Cache

MongoDB covers document-oriented workloads, DynamoDB and Firestore handle serverless and mobile-backend use cases well, and Redis is our standard for caching, session management, and rate limiting wherever sub-millisecond response times matter. ClickHouse and TimescaleDB come in for analytics and time-series workloads that a general-purpose database isn't built for.

Technologies we use
MongoDB / MongoDB Atlas Redis / Upstash DynamoDB Firestore Cassandra / ScyllaDB Elasticsearch ClickHouse (analytics) TimescaleDB (time-series) Memcached
Focus 06

Authentication & Security

Auth0, Keycloak, and AWS Cognito cover most of our authentication needs depending on a client's infrastructure, all built on OAuth 2.0, OIDC, and JWT standards. HashiCorp Vault manages secrets so API keys and credentials never end up in code or environment files, and Clerk or Firebase Auth handle lighter-weight, product-embedded authentication flows.

Technologies we use
Auth0 Keycloak AWS Cognito OAuth 2.0 / OIDC JWT Passport.js Firebase Auth Clerk HashiCorp Vault (secrets)
What this stack enables

Reliable, scalable backends, chosen for the workload, not the default.

The right language for each layer.

Node.js and Python for velocity, Go where sub-millisecond latency is a hard requirement, Java for enterprise integration.

REST by default, gRPC and GraphQL when earned.

OpenAPI documentation for external APIs, gRPC for internal services, GraphQL where client-driven flexibility is worth it.

Every API ships with docs and rate limiting.

Documentation, versioning, and rate limiting from the first release, not added after the first incident.

What we use this for
01

FastAPI and NestJS

For Python and Node.js API layers respectively, both with strong typing, auto-documentation, and high throughput

02

Go

For performance-critical services where sub-millisecond latency and efficient resource utilisation are requirements

03

PostgreSQL

As the default relational database for its reliability, extension ecosystem including pgvector for AI, and operational maturity

04

Apache Kafka

For event-driven architectures requiring durable, high-throughput message streaming between services

05

Redis

For caching, session management, rate limiting, and pub/sub patterns with sub-millisecond response requirements

06

gRPC

For internal microservice communication where schema enforcement and performance matter more than HTTP/JSON flexibility

← Back to the full technology stack