[{"data":1,"prerenderedAt":107},["ShallowReactive",2],{"case-study:\u002Fcase-studies\u002Fsales-analytics-platform-modernization":3},{"id":4,"title":5,"body":6,"date":96,"description":97,"extension":98,"meta":99,"navigation":100,"path":101,"provenance":102,"sensitivityReviewed":96,"seo":103,"sources":104,"stem":105,"__hash__":106},"caseStudies\u002Fcase-studies\u002Fsales-analytics-platform-modernization.md","Modernizing a Sales Analytics Platform",{"type":7,"value":8,"toc":85},"minimark",[9,14,18,21,25,28,32,35,38,42,45,49,52,56,78,82],[10,11,13],"h2",{"id":12},"problem","Problem",[15,16,17],"p",{},"At Heartland Payment Systems I worked on a data-intensive internal analytics\nplatform used by sales professionals and managers to understand performance,\nclient portfolios, activity, production, incentives, and payment metrics.",[15,19,20],{},"The application was mature and heavily used, but its aging frontend stack made\nit progressively harder to extend, test, and deploy. The teams that depended on\nit needed clearer access to the metrics that drive their work, and the codebase\nneeded to be modernized without disrupting the dashboards already in daily use.",[10,22,24],{"id":23},"constraints","Constraints",[15,26,27],{},"The platform was a large, production frontend codebase that people relied on\nevery day, so nothing could break while it was being modernized. It ran inside a\nregulated payments company, which raised the bar on how changes were released\nand verified. Modernization had to happen incrementally, alongside the existing\nfunctionality, rather than as a single disruptive rewrite.",[10,29,31],{"id":30},"architecture","Architecture",[15,33,34],{},"I helped lead the migration from Vue 2 to Vue 3, introducing Pinia for state\nmanagement to improve the maintainability of the large frontend. I also\nmodernized the frontend build tooling from Webpack to Vite.",[15,36,37],{},"Around that core I built and enhanced reusable tables, charts, navigation,\nloading states, error handling, and notification components, so dashboards could\nbe assembled from consistent, tested building blocks. I developed role-aware\nviews and secure manager workflows, including the ability for authorized\nmanagers to view the application as their direct reports. The work spanned the\nVue frontend, Node.js services, and a Snowflake-backed data layer.",[10,39,41],{"id":40},"tradeoffs","Tradeoffs",[15,43,44],{},"An incremental migration behind feature flags is slower than a big-bang rewrite\nand means maintaining old and new paths side by side for a while. I accepted\nthat cost because it let new dashboard experiences be introduced safely\nalongside the existing functionality, which mattered far more than migration\nspeed on a system this heavily used.",[10,46,48],{"id":47},"testing","Testing",[15,50,51],{},"I added automated tests for major dashboard routes and shared application\nbehavior, so the reusable components and the migrated views had a regression\nsafety net as the modernization progressed.",[10,53,55],{"id":54},"results","Results",[57,58,59,68,73],"ul",{},[60,61,62,63,67],"li",{},"Improved the performance of complex sales-data visualizations by more than 30% ",[64,65,66],"span",{},"docs\u002Fprofile\u002Fprojects.md",".",[60,69,70,71,67],{},"Made a large analytics application easier to extend, test, and deploy ",[64,72,66],{},[60,74,75,76,67],{},"Gave sales teams clearer access to the metrics needed to evaluate performance and manage client portfolios ",[64,77,66],{},[10,79,81],{"id":80},"what-id-change-and-what-i-learned","What I'd Change and What I Learned",[15,83,84],{},"The most valuable decision was migrating incrementally behind feature flags\ninstead of rewriting; it kept a heavily used system stable while it modernized.\nNext time I would establish the performance baselines and the component test\ncoverage even earlier, so every migration step could be measured against a known\nstarting point rather than assessed after the fact.",{"title":86,"searchDepth":87,"depth":87,"links":88},"",2,[89,90,91,92,93,94,95],{"id":12,"depth":87,"text":13},{"id":23,"depth":87,"text":24},{"id":30,"depth":87,"text":31},{"id":40,"depth":87,"text":41},{"id":47,"depth":87,"text":48},{"id":54,"depth":87,"text":55},{"id":80,"depth":87,"text":81},"2026-07-22","Helping lead a Vue 2 to Vue 3 migration of a data-intensive internal analytics platform, with a reusable component library and safer, feature-flagged releases.","md",{},true,"\u002Fcase-studies\u002Fsales-analytics-platform-modernization","professional",{"title":5,"description":97},[66],"case-studies\u002Fsales-analytics-platform-modernization","qi4g3BYvDqOpJr_46Ap7rSY4CnHyYGdVbxxP0A26JIo",1788403975818]