resoluteware Get in touch
Expertise

How we build, and what with.

Six applied practices that shape an industry solution, and the seven-area stack we draw on to deliver it.

Applied practice

Technology choices only matter in the shape of a business problem. What follows is how we actually put these skills to work when we build an industry solution — the sequence, the trade-offs we weigh, and what each layer is expected to earn.

A-01

Domain modelling as the first artifact

Every engagement starts by getting the language right. We work with the people who run the business to name the entities, the events and the boundaries between them, then hold the software to that vocabulary. In logistics that means shipments, consignments and custody events are distinct things with distinct lifecycles; in payments it means an instruction, an authorization and a settlement are never collapsed into one record because a database schema found it convenient.

The model then decides the seams. Bounded contexts become deployable units, team ownership and integration contracts in one move, which is why the modelling work pays for itself long before the first service ships.

A-02

Event-driven integration where the world is asynchronous

Kafka, RabbitMQ, IBM-MQ and Camel are tools for one recurring situation: the physical or financial event has already happened and the systems of record have to catch up without losing or duplicating it. We design for idempotent consumers, explicit ordering guarantees and replay, because in a supply chain or a ledger the interesting failures are the ones that only show up under partial delivery.

Where a monolith is genuinely the right answer we say so. A majestic modular monolith with clean internal boundaries beats a distributed system nobody can debug, and it can be decomposed later once the seams have proven themselves in production.

A-03

Cloud-native platforms sized to the bill

Containerization, orchestration and infrastructure-as-code give a platform that can be rebuilt from source rather than remembered. We treat FinOps as an architectural constraint rather than a finance report: workload placement, storage tiering and data egress are design decisions, and we cost them before committing to them.

A migration of 250 applications is not 250 identical moves. Sequencing by dependency and risk, and being willing to leave — or return — a workload on-premises, is what turned that programme into roughly a 30% reduction in operating cost.

A-04

Data platforms built for lineage, not just volume

PostgreSQL, Cassandra, Redis and Elasticsearch each answer a different question, and most industry solutions need several of them behind one coherent model. We separate the transactional record from the analytical one, define ownership per dataset, and make lineage explicit so that a number in a report can be traced to the event that produced it.

That discipline is what makes environmental telemetry, economic models and financial reporting defensible under audit — and what lets AI and machine learning work be built on data the business already trusts.

A-05

Security and identity designed in, not bolted on

Authorization servers, OAuth 2 flows, JWT and JWE handling, custom claims and role models, HMAC signing, tokenization and two-factor authentication are architecture decisions with a blast radius, so they are settled early. We define the trust boundaries alongside the domain model, then make the enforcement points explicit in the platform rather than scattered through application code.

In regulated sectors this is also a documentation exercise: the security architecture has to be legible to a reviewer who was not in the room.

A-06

Delivery pipelines as part of the architecture

An architecture the team cannot deploy safely is a diagram. We design the pipeline with the system: build and test automation, environment parity, progressive rollout and the telemetry that proves a release behaved. Test-driven development and trunk discipline are what keep the increments small enough to be reversible.

The measure of the work is the loop: how long between a decision and observable evidence that it was the right one.

The working stack

Programming languages

C# Expert Java Proficient Python Intermediate Rust Novice · learning C++ Intermediate SQL Expert Zig Novice · learning

Infrastructure

Cloud Native AWS Cloud Platform Orchestration Containerization IaC System Telemetry FinOps Azure AD

AI / ML

TensorFlow PyTorch ML.NET R Oracle Data modelling Claude Ollama

Data management

PostgreSQL MS SQL MySQL Redis Oracle AI Cassandra Elasticsearch

Frameworks & integration

Spring Boot .NET Kafka IBM-MQ RabbitMQ Camel REST Event-driven Microservices Majestic / modular monolith

Security

Authentication / Authorization (OAuth) Cloud & system security Tokenization

Development tools & practices

Git Jenkins Agile methodologies JIRA Confluence TDD

Looking for something not on this list?

Ask us