PIMSS Data Systems, a company in the property domain focused on council house provisioning and related project management, engaged me to migrate their legacy Silverlight application to Vue.js. The system was well-established with at least 15 screens of complex interaction - by no means a small application.
The migration carried an unusual constraint: the user interface had to remain essentially identical to the original. The existing Silverlight application - essentially a Windows Forms application embedded in the browser, similar to Flash - wasn't well-styled or particularly user-friendly, but the business required familiarity for their users. This meant recreating Silverlight's non-standard interface patterns in Vue.js, which presented styling challenges I wouldn't normally encounter in greenfield Vue development.
The technical approach followed component-driven design with proper state management, applying SOLID principles to ensure each component fulfilled a single purpose. The backend team had sensibly contained the Silverlight application behind a REST API, which made the migration considerably smoother - I only needed to add a few additional API endpoints rather than rebuilding data access.
Beyond the migration, I provided Agile advisory to the leadership team. They had attempted Agile adoption but struggled with implementation - daily standups lacked structure, and broader practices like backlog refinement, retrospectives, and definition of done weren't established. I worked with leadership to introduce these practices properly, extending the conversation beyond just the development team to how the business itself could become more agile.
The team was small - around five developers total, with myself and one other focused on the frontend while the lead developer (who had built the original Silverlight application) handled backend concerns. I completed approximately 90% of the migration before the engagement ended - the client decided their internal team could complete the remaining work, a common pattern with contract engagements.