QTK-Cloud Logo
Project-Based & Retainer

Custom Software Development

Full-stack enterprise application development with modern architectures, API integration, and legacy system modernization. We build systems your team can run, extend, and own long after we hand them over.

Fixed-scope or retainerDelivery in 2–6 weeks per incrementYou own the code and IP

Is the feature list dressing up requirements nobody actually agreed on?

Most custom software problems aren't technical at first — they're unclear requirements dressed up as a spec. Without a shared domain model and the constraints nobody mentioned in the kickoff call, teams end up building the right code against the wrong requirements, which is the most expensive kind of rework there is.

What we target

These are the outcomes we scope every engagement against — targets we commit to in writing, not results we're claiming to have already delivered for you.

2 wk
Delivery increments
>80%
Target test coverage on new code
100%
Releases shipped with handover docs

Overview

Most custom software problems are not technical at first — they are unclear requirements dressed up as a feature list. Before we write a line of code we run a discovery phase: interviewing the people who will actually use the system, mapping the domain in plain language, and writing down the constraints nobody mentioned in the kickoff call (compliance windows, existing integrations, the one legacy report finance still depends on). That domain model becomes the shared vocabulary for the rest of the engagement, and it is the artefact that prevents the most expensive kind of rework — building the right code against the wrong requirements.

This service is for teams that need a system built or substantially reworked and don't have the in-house bandwidth, or want an outside team to validate an architecture decision before committing engineering months to it. That covers new product builds, internal tools replacing spreadsheets and email chains, and existing applications that have outgrown their original design.

What we actually do is full-stack: backend services, data layer design, frontend delivery, and the integration work that connects a new system to what already exists. We are honest about architecture — a modular monolith is the right call more often than teams assume, and we will tell you when microservices would add operational cost without a matching benefit. Where a service boundary genuinely earns its complexity — independent scaling, independent deploy cadence, a team boundary that maps to a system boundary — we design it properly, with clear contracts and event-driven communication rather than tightly coupled synchronous calls.

What changes for the client: you get software with a documented architecture, a test suite that catches regressions before your users do, and a codebase your own engineers can pick up without a translator. We build for handover from day one, not as an afterthought at the end of the contract.

What's included

🧩

Microservices architecture, chosen deliberately

We evaluate modular monolith vs. microservices against your team size, deploy cadence, and scaling needs before picking one — then design service boundaries around domain contracts, not org charts.

🔗

API development & integration

REST and event-driven APIs designed with versioning and idempotency from the start, plus integration work against the third-party systems and internal services your business already depends on.

🏚️

Legacy modernization via strangler fig

We wrap legacy behavior in characterization tests first, then migrate functionality piece by piece behind a routing layer — so the old system keeps running while the new one earns trust.

🗄️

Database optimization

Schema design, index tuning, and query plan analysis to eliminate N+1 patterns, plus connection pooling, read replicas, and caching layers sized to your actual read/write ratio.

📨

Event-driven backends

Queue-based processing with the outbox pattern for reliable event publishing and idempotent consumers, so retries and duplicate deliveries don't corrupt state.

🧪

Testing & quality gates built in

Unit, integration, contract, and end-to-end tests placed where each pays off, run in CI as a merge gate — plus WCAG 2.2 AA accessibility and i18n treated as build requirements, not late patches.

Who this is for

You need a system built and don't have the in-house bandwidth

A new product, an internal tool, or a replacement for spreadsheets and email chains needs to be built, and your team doesn't have the spare capacity.

You want an outside team to validate an architecture decision

Before committing engineering months to microservices or a rewrite, you want a second, independent opinion on whether it's the right call.

An existing application has outgrown its original design

What started as a small internal tool now carries load and complexity its architecture was never meant to handle.

You're migrating a legacy system and can't afford downtime doing it

The old system has to keep running while the new one is built and proven, not replaced in one risky cutover.

How we work

  1. 1

    Discovery

    Stakeholder interviews, domain modeling, and constraint mapping. You receive a written requirements document and a first-pass domain model diagram to confirm before design starts.

  2. 2

    Design

    Architecture decision (modular monolith vs. service boundaries), data schema draft, and API contracts. You receive an architecture decision record explaining the trade-offs and why we chose this path.

  3. 3

    Build

    Development in two-week increments with a working, demoable build at the end of each one. You receive a changelog and a demo environment link every increment, not just at the end of the contract.

  4. 4

    Validate

    Unit, integration, contract, and end-to-end test suites run against staging, plus an accessibility pass against WCAG 2.2 AA. You receive a test coverage report and an accessibility audit summary.

  5. 5

    Handover & Run

    Code, infrastructure, and operational documentation transferred to your repositories, plus a walkthrough session with your engineers. You receive handover docs, a runbook, and repository access under your organization's ownership.

Not sure this is the right fit yet?

A scoping call costs nothing and tells you exactly where your pipeline stands — no commitment either way.

Tech stack

We pick languages and frameworks based on what the problem actually needs — a data-heavy backend service, a desktop application, or a customer-facing web app each call for different trade-offs. The stack below covers the tools we reach for most often across custom development engagements.

TypeScriptReactNext.jsNode.jsPythonFastAPIGoC++QtPostgreSQLRedisKafkaDockerKubernetesPlaywrightJest

Tools by layer

LayerTools We Use
FrontendTypeScript, React, Next.js
Backend servicesNode.js, Python (FastAPI), Go, C++/Qt for desktop
Data & messagingPostgreSQL, Redis, Kafka
Delivery & testingDocker, Kubernetes, Playwright, Jest

Deliverables & outcomes

  • Source code in your organization's own version control, under your ownership
  • Architecture decision records documenting why key choices were made
  • Automated test suites (unit, integration, contract, end-to-end) wired into CI
  • Database schema documentation and migration scripts (expand/contract pattern)
  • API documentation and contract specifications for every exposed endpoint
  • Handover documentation and a runbook for operating the system day to day
  • Accessibility audit summary against WCAG 2.2 AA
  • A demo/staging environment your team can continue using post-handover
2 wk
Delivery increments
>80%
Target test coverage on new code
100%
Releases shipped with handover docs

Engagement models

How the work runs, independent of what it costs — pick the model, then see what it looks like at each pricing tier below.

Fixed-scope project

A defined build — a feature, a service, or a full application — delivered in two-week increments against an agreed architecture and requirements document.

Best for: A specific, scoped deliverable with a clear start and end.

Ongoing retainer

Continuous feature development and maintenance across a modular monolith or a small set of services, billed as ongoing monthly capacity.

Best for: Teams that need sustained development capacity rather than a one-off project.

Embedded engineer

One of our engineers joins your team and sprint process directly, working alongside your developers on the same codebase.

Best for: Teams that want extra hands inside their existing process rather than a separate delivery track.

Pricing tiers

PlanWhat this service looks like
Starter — $299/moSmall, well-scoped features or a single service built and maintained within a limited monthly capacity — good for a focused internal tool or an API integration.
Professional — $1,499/moOngoing feature development across a modular monolith or a small set of services, with dedicated capacity for testing, database work, and two-week delivery increments.
Enterprise — CustomMulti-team engagements: full legacy modernization programs, multiple concurrent services, dedicated architecture ownership, and custom SLAs around delivery cadence and incident response.

Scoping calls are free. Before any work starts, we confirm the exact scope, timeline, and price in writing so there are no surprises once the engagement begins.

Frequently asked questions

Who owns the code once the project is done?

You do. All source code and intellectual property are delivered in your own repositories under your organization's ownership — nothing is retained on our infrastructure after handover.

How long does a typical engagement take?

We work in two-week delivery increments with a demoable build at the end of each one. A small feature might be one or two increments; a full modernization program runs across many, scoped and re-confirmed as we go.

What access do you need from us?

Repository access scoped to the project, a staging environment or the means to create one, and time from a subject-matter expert during discovery. We do not need production credentials unless the engagement specifically requires a production deployment step.

How does handover actually work?

Handover is continuous, not a single event at the end. Every release ships with documentation, and the final increment includes a full walkthrough session, a runbook, and a knowledge-transfer session with your engineers before we step back.

Can you work with our existing tooling and legacy systems?

Yes. For legacy modernization we use the strangler-fig pattern: we write characterization tests against the current behavior first, then migrate functionality incrementally behind a routing layer, so your existing system keeps running throughout.

What happens if something breaks after handover?

If you're on a retainer, we're already positioned to respond under that engagement's terms. Without a retainer, incident support is scoped and quoted as a separate, time-boxed engagement — the handover documentation and runbook are written so your own team can also resolve most issues directly.

Ready to talk about your project?

Tell us where things stand today and where you need them to be — scoping calls are free.