Skip to main content

Legacy application modernization services that fix before they rebuild

Most legacy systems need a fix, not a rewrite. Boffin Coders is a legacy software modernization company for systems a business runs on, and our legacy application modernization services start by telling you which one yours needs, with the reasons in writing, and then do either. A fix is often hosting, one slow query or a dependency out of support. A rebuild is for a system that fights every change. Either way the code sits in your repository from the first commit, and every URL that works today still works afterwards.

Projects from US$4,000 · US$18-38 an hour · from US$3,000 a month
  • Fix or rebuild, with reasons
  • Every URL kept
  • Your repo from the first commit

Every URL still answers after the move

The old sitemap was saved before the deploy and compared with the new one after it. The site is ours, so every figure in the panel can be checked.

Our migration receipt

A 10,723-page site moved to a new framework

Pages rebuilt on Next.js
10,723
URLs lost
0
  • Counted from the site's sitemap before and after the move.
  • A framework move, checked the same way we check a PHP or .NET system before any part of it moves.
See the timezones.in project →
Before you pay for a rebuild

Most systems need a fix, not a rewrite

A rewrite is the most expensive thing we sell and the easiest to sell badly. Two or more of the five signs below and it is genuinely the cheaper path. One on its own usually is not, and the complaint we hear most often is not a sign at all.

  1. 01

    Nobody will touch one file

    A module every developer routes around is a boundary, and boundaries are what a rebuild buys you.

  2. 02

    The dependency is out of support

    A framework or runtime past end of life is a security clock, not a preference.

  3. 03

    Two features cannot ship at once

    When every change touches everything, delivery speed is the architecture telling you.

  4. 04

    The data model fights the business

    If new requirements need a workaround table each time, the model is the problem.

  5. 05

    Nobody who built it is still here

    Knowledge loss is real, but it is a documentation problem first. Only count this one alongside another.

Not a sign

“It is slow.”

More often than not, that is hosting, images, or one query without an index, and it is a day of work. A slow system rebuilt badly is a slow system with a bigger invoice. Ask for the three numbers first: time to first byte, the largest asset on the page, and the slowest query in the log.

If you do rebuild: the check that proves no URL moved ↓
Proof

The receipt, and the check that proves it

A migration is judged by what still works the morning after. Ours is public, and we are as specific about how it was checked as about the result.

How we checked that nothing moved

Before the deploy we saved the old site’s sitemap. After it, we compared that snapshot with the new sitemap, one family of pages at a time: 10,722 URLs before, 10,723 after, one page added and none removed. A test in the build also stops a deploy that would drop a URL the site is known to serve.

A sitemap diff does not catch a changed title, heading, canonical or redirect rule, so those are checked on their own. It is the same check we would run on a PHP or .NET system before any part of it moves, and it is the difference between a migration and a traffic loss. The full method is in how we rebuilt without losing a URL.

What the same method covers

  • Done and liveA framework move of timezones.in, our own site: 10,723 pages rebuilt on Next.js, 0 URLs lost, counted from its sitemap before and after the move.
  • Same method, for PHP and .NETA PHP or .NET to Node.js migration runs as wrap, replace and switch, and the URL check is the one we ran on timezones.in. Much of our client work is under NDA, so the plan for yours is walked through on a call.
  • Regulated systems, by principleFor regulated clinical systems, or anything sold on a compliance certificate, we build the controls and your compliance officer verifies them before anything moves.

Independent review proof

4.9 average rating across Clutch and GoodFirms.

Six ways to modernise

Six ways to modernise a system, cheapest first

Our legacy application modernization services start with the cheapest option that fixes your actual problem, whatever the system runs on, and only move down this list when it will not. The industry calls these the six Rs. Here they are in plain words, with the situation each one fits. If the system will keep changing after the move, the same engineers can stay on through a software development retainer.

Rehost

Move it as it is

The same code on better hosting. Fixes a slow or failing server and buys time, and changes nothing about how hard the code is to work on.

Fits when: The server is the problem, not the code.

Refactor

Tidy the code

Rewrite the worst parts from the inside while the system keeps its behaviour. Tests go in first, so each change can be proved harmless.

Fits when: One or two areas nobody dares touch.

Replatform

Upgrade what it runs on

Move to a supported version of the language, framework or database. Often the whole job when the real problem is an out-of-support dependency.

Fits when: The platform is past its end of life.

Rearchitect

Split out the part that hurts

Take the one area that changes most and give it its own service, and leave the rest alone. Not microservices everywhere, which most small teams cannot afford to run.

Fits when: Two features cannot ship at the same time.

Rebuild

Rebuild it, piece by piece

A new system that replaces the old one a section at a time, with both running until the last piece moves. The most expensive option, and the right one when two or more of the five signs apply.

Fits when: The system fights every change you make.

Replace

Replace it with a product

Retire the system and move the data into something you buy. Cheaper to build, dearer to run, and you give up whatever made yours different.

Fits when: Nothing about it is special to your business.

How it works

Common migration paths

The same rule runs through all six: the old system keeps serving until its replacement is proven, one piece at a time, and nothing is switched off on a promise.

A site rebuild that keeps every URL

A content site or web app moved to a new framework without losing search traffic. The old sitemap is saved before the deploy and compared with the new one after it. That check is how timezones.in, our own site, moved 10,723 pages with none lost. The other trap is a redirect written too broadly, and we have written up the redirect rules that eat live pages. When the whole job is moving a website to a new platform, host or domain, our website migration services list and map every address before anything changes.

PHP to Node.js migration

For CodeIgniter, old Laravel and hand-written PHP. We do not rewrite in one go. Each PHP module is put behind an API, replaced by a Node.js or NestJS service, and switched over while the old one keeps serving, so the site never goes down and every URL keeps working. Our Node.js developers run the new side. Much of our client work sits under NDA, so we walk you through the module map and the cut-over plan on a call. The URL check is the one we ran when timezones.in moved between frameworks.

One tangled codebase, split where it hurts

Most monoliths do not need breaking into microservices, and a small team pays for every extra service it has to deploy and watch. We split out the one or two areas that change most and leave the rest as one well-organised codebase.

An old server to managed hosting

A system on a single ageing server, or a machine in a cupboard, moved to managed hosting with backups, monitoring and a way back. Often the cheapest fix on this page, and often enough on its own.

Legacy .NET to Node.js

Old ASP.NET Web Forms applications moved to a Node.js API with a React front end, one screen at a time, using the same wrap, replace and switch pattern as PHP. The old system keeps serving until each piece has moved.

An old iOS or Android app brought up to date

An app that no longer builds on current tools, or that a store now rejects for an old SDK, is fixed first: dependencies updated, the build restored and the reviewers answered. When every release fights the code, or the app now needs both stores, we rebuild it in Flutter, one codebase for iOS and Android, while the old version stays live. Eleven apps of our own, ten on Google Play and eight on the App Store, are kept current the same way.

What it costs

Published, not quoted on the call

In USD. Hourly and monthly rates move with the stack and the seniority, from a junior on routine work to a senior on complex builds. Nothing is quoted outside them, and if the number does not work for you, you have saved yourself a meeting.

A modernisation project starts at
US$4,000
Scoped once, with the lines shown.
Short pieces of work
US$18-38 an hour
By seniority and the work.
A developer by the month
From US$3,000 a month
Month to month, a month’s notice either way.
Agency sprint
US$2,000 per two-week sprint
Under your brand, invoiced after you see the work.

Every price on one page →

FAQ

What to ask before you choose legacy application modernization services

The questions a careful buyer asks before handing over a system the business runs on. Each answer starts with the short version.

Because we will tell you when you do not need a rebuild. Most systems we are asked to replace need a fix: better hosting, one slow query, an unsupported dependency. When a rebuild is the cheaper path, we say why in writing, then do it piece by piece so the system stays live. The code sits in your repository from the first commit, and every URL that works today still works afterwards. We are a legacy software modernization company in India, with our own team in Mohali, and we agree the overlap hours with you before the work starts.

Not answered here?

Not sure if it needs a fix or a rebuild?

Twenty minutes with an engineer. Bring the three numbers if you have them: time to first byte, the largest asset on the page and the slowest query. You leave knowing which one your system needs, and roughly what it costs from the published rates.