// 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.
// 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.
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.
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.
APIs that survive contact with users
REST, gRPC and GraphQL with versioning, contract tests and documentation that stays in sync with the code.
Modern web applications
React, Next.js and TypeScript front ends with real accessibility, real performance budgets and server rendering where it earns its keep.
Legacy modernisation
Strangler-fig migrations that ship value each sprint instead of a big-bang rewrite that never lands.
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
- 01→FrameClarify the problem, constraints and what 'done' looks like.
- 02→SliceCut the work into shippable increments with visible value.
- 03→BuildTrunk-based development, tests as design tool, review as teaching.
- 04→ShipBehind flags, observable from the first deploy, rollback ready.
- 05LearnMeasure, remove what did not work, write down what did.
// stack
What we reach for
// 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
// 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