
The engagement
I worked with JTX Fitness, the UK home fitness equipment retailer, from 2015 to 2023 as their go-to web developer for everything storefront-related. Eight years. Two major Magento upgrades. A catalogue of treadmills, exercise bikes, cross trainers, and rowing machines that grew with the business. The engagement wound up in 2023 when their internal team was ready to take the platform fully in-house, which is the right place for a long-running ecommerce build to end.
This is a completed engagement and the case study is written in past tense. The site you see today at jtxfitness.com has moved on since I last touched it; the screenshot above is from the current live storefront.
Scope
The brief was the full lifecycle of a Magento store rather than a one-off project:
- Design. Storefront layout, product detail page treatments, checkout refinements, seasonal landing pages.
- Development. Theme work, frontend engineering, integration with the back-office stack and the dispatch and warranty workflows that sit behind a fitness-equipment retailer.
- Maintenance. Routine Magento upgrades, security patches, extension updates, performance work, and the steady stream of small fixes that keep an ecommerce site healthy day-to-day.
- Custom module development. Bespoke Magento modules where the built-in functionality and the marketplace did not fit the way JTX needed to sell or support their products.
Across the engagement that meant being the person who knew the codebase, could ship a change on a Tuesday afternoon, and could be trusted not to break checkout the day before a Black Friday push.
Why long-running ecommerce work looks like this
A multi-year Magento partnership is mostly the quiet work that does not show up in a launch announcement. Catalogue grows. Payment providers deprecate APIs. A delivery integration changes its callback contract. A new product line needs an attribute set and the filtering on the category page rebuilt around it. A core upgrade lands and three extensions need patches before deploy.
The reason a retailer keeps the same developer on for eight years is continuity. Knowing why a particular cron job was written, which extension is load-bearing for the warranty flow, which database column is safe to backfill and which one absolutely is not. That context is the value, and it compounds. Most of the work that mattered for JTX was small, incremental, and made the next change cheaper to ship.
Custom modules
Where off-the-shelf extensions did not match the business, we built purpose-fit Magento modules. The pattern was the same each time: start from what the operations team actually did in their day, model it properly in Magento, and write the module so the next developer (or me, six months later) could understand it from the code alone. Vanilla Magento conventions, clear extension points, repository pattern where it helped, no clever-clever inheritance trees.
What I would repeat
Three habits earned their keep across the eight years.
Stay close to the operations team. The most useful thing I shipped in any given month was rarely the most technically interesting. It was the change that took a daily piece of friction out of someone's job. You only hear about those if you are talking to the people running the warehouse and the customer support inbox.
Boring upgrades, on a schedule. Magento punishes "we will do the upgrade later". Two stable upgrades a year, scheduled in quieter retail months, kept the platform current and made the difficult upgrades less difficult. Skipping them is how you end up paying for a six-month rescue project two years later.
Write the module like you will hand it over. Every custom module on JTX was built with the assumption that another developer would pick it up without context. Comments where the code could not explain itself, tests on the parts that would silently rot, configuration via admin where it was sensible. It made the handover at the end of the engagement much smaller than it could have been.
What ended the engagement
JTX brought their development capability fully in-house in 2023, which was the natural end-point for a long external partnership. We did a clean handover: documented modules, current upgrade state, a written tour of the catalogue and theme conventions, and a list of the next two or three things I would have prioritised if I had stayed on. That kind of ending, where the client outgrows the freelancer rather than the other way round, is the one to aim for.