// software development · malmö, sweden

Clean, performant code built to last

Go, Node.js, Java, C#, React and Next.js. Microservices and event-driven patterns are home turf, and because we also run infrastructure, the code we write is designed to be operated.

commit
git push
build
docker build
test
go test ./...
deploy
helm upgrade
Seniorengineers only, no bench staffing
In-teamwe work inside your process
Prodwe run what we build
OSSa decade of upstream contributions

// what we do

Engineering that holds up after the launch party

We optimise for the second year of a system's life: clear boundaries, honest tests, observable behaviour and documentation that answers the questions people actually ask.

01

Backend & distributed systems

Services in Go, Java, C# and Node.js designed around clear boundaries, idempotency and failure modes you can reason about at 03:00.

02

Event-driven architecture

Kafka, SQS/SNS, NATS and outbox patterns, with schema governance and replay strategies so events remain an asset rather than a liability.

03

APIs that survive contact with users

REST, gRPC and GraphQL with versioning, contract tests and documentation that stays in sync with the code.

04

Modern web applications

React, Next.js and TypeScript front ends with real accessibility, real performance budgets and server rendering where it earns its keep.

05

Legacy modernisation

Strangler-fig migrations that ship value each sprint instead of a big-bang rewrite that never lands.

06

Engineering practice

Test strategy, trunk-based delivery, code review culture and onboarding docs, the habits that keep velocity up after we leave.

// how we work

Small slices, shipped continuously

  1. 01FrameClarify the problem, constraints and what 'done' looks like.
  2. 02SliceCut the work into shippable increments with visible value.
  3. 03BuildTrunk-based development, tests as design tool, review as teaching.
  4. 04ShipBehind flags, observable from the first deploy, rollback ready.
  5. 05LearnMeasure, remove what did not work, write down what did.

// stack

What we reach for

languages
GoTypeScriptJavaC#PythonRust
backend
gRPCRESTGraphQLPostgreSQLRedisKafka
frontend
ReactNext.jsTanStackTailwindVite
testing
UnitContractIntegrationPlaywrightLoad
delivery
GitHub ActionsDockerKubernetesFeature flags

// principles

A short version of our engineering beliefs

Boring technology wins. Every unusual choice spends a budget that would be better spent on the part of the system that is genuinely hard.

Operability is a feature. If a service cannot be observed, rolled back and reasoned about under pressure, it is not finished, regardless of what the test suite says.

The best consultancy engagement ends with your team faster than before, not with a dependency on us.

// faq

Common questions

Do you take on whole products or join an existing team?

Both. Most often we embed with an existing team, but we also take end-to-end responsibility for a bounded service or product when that is the cleaner split.

What does a typical engagement look like?

A few weeks to a few months, part-time or full-time, with a clear first deliverable inside the first two weeks so you can judge the fit early.

Can you help us hire and level up our own engineers?

Yes. Pairing, code review, architecture workshops and technical interview support are a normal part of what we do, the goal is that you need us less over time.

// how we work

01 embed
your team, your tools
02 ship
first change in prod, week one
03 harden
tests, docs, runbooks
04 hand over
your team owns it

// contact

Have a system you want built, rescued or sped up?

A single review or a longer engagement inside your team. Both work for us.

office: Malmö, Sweden · uppdrag across Europe

Spam protected. No newsletters, ever.