{"componentChunkName":"component---src-templates-project-template-js","path":"/projects/product-customizer-coldfusion-to-foss-migration","result":{"data":{"project":{"title":"Product Customizer - ColdFusion to FOSS Migration","slug":"product-customizer-coldfusion-to-foss-migration","description":"Infrastructure rescue migrating a product customizer platform from end-of-life Adobe ColdFusion + MSSQL stack to a fully FOSS stack before ColdFusion's core support ended (Nov 2025). Migrated the application server from ColdFusion to Lucee, database from MSSQL to MySQL, containerized with Docker, and deployed on GCP. Preserved the product customizer's backend logic, ontology system, and WooCommerce integration throughout the migration.","caseStudy":"## Stack & Architecture\n\nBuilt with Docker, Google Cloud, WooCommerce, MySQL, API. Delivered 2024–2025.\n\n<!-- Auto-drafted from profile data. Add problem/approach detail as needed. -->\n","gallery":[],"date_start":"2024","date_end":"2025","hours":null,"client":null,"tags":["cloud","migration","devops","e-commerce"],"outcomes":["Migrated legacy ColdFusion + MSSQL to fully open-source stack before EOL deadline","Containerized application with Docker and deployed on GCP","Preserved all business logic, ontology system, and WooCommerce integration"],"tech_stack":["Docker","Google Cloud","WooCommerce","MySQL","API"],"links":[{"label":"GitHub","url":"https://nishanttiwari.com"}],"image":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='229'%20viewBox='0%200%20400%20229'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20115v114h37a264%20264%200%200040-1%204126%204126%200%2001151-88h-5l4-1h3l-3-1c-6-1-8-6-4-9%202-3%206-2%207%200l5%201%204%201c0%202%200%202%202%200%203-3%206-1%206%204v3l1-4c0-4%200-5%201-4v-1l3-2c19-10%2032-19%2030-19-1-1-1-1%202-1h5l-1-1-1-4v-3l1%203c1%203%201%203%201-2l-1-5-1-2%201-2%201-1%202-2c2-1%202-1%202%201l2%202%201%202-1%202c-1%200-2%201-2%203%200%201%200%202%201%201l2%201a19020%2019020%200%2001103-55v5l1%2089%201%2090V0H0v115m107-27l-2%204c0%202%204%205%207%206l4%202c0%202-5%203-6%201s-5-2-5%200c0%205%2011%207%2014%202%203-4%201-7-4-9l-5-3c0-2%204-1%205%201%202%201%205%201%205-1%200-5-9-6-13-3m21%201l-7%2017c0%201%205%200%206-2%200-2%201-2%204-2s4%200%204%202c1%202%205%203%205%201l-4-10c-4-10-6-12-8-6m14%207c0%209%200%2010%202%2010s2-1%202-3c0-4%200-4%203-4l6-2c5-5%200-11-8-11h-5v10m18-9l-1%2010c0%209%200%209%203%209%202%200%202%200%202-4s0-4%203-4%203%200%203%204%200%204%203%204h2V96c0-9-1-9-2-9-2%200-3%200-3%203%200%204%200%204-3%204s-3%200-3-4c0-3-3-5-4-3m36%202l-6%2016c0%202%204%201%205-1%200-2%201-2%204-2s4%200%205%202c0%201%201%202%203%202%203%200%203%200-2-11-4-10-7-12-9-6m30%206c-5%2011-5%2011-2%2011%202%200%203-1%203-2%201-2%202-2%204-2%203%200%204%200%205%202%200%201%201%202%203%202%203%200%203%200-2-11-5-13-6-13-11%200m18-2c-3%201-3%208%200%2011v2l-2%201c0%205%209%206%2012%202%202-2%202-4%202-10v-7l-5-1-7%202m15%200c-3%204-3%208%200%2011s9%202%2011-1l1-2h-9l5-1c4%200%204%200%204-3-2-6-7-8-12-4m13%205c0%206%200%208%203%208%202%200%202-1%202-5s1-6%202-6c2%200%202%201%202%205%200%206%200%206%203%206%202%200%202%200%202-6%200-7-1-9-8-9h-5l-1%207m-58%2031l-1%201-3%202h-1c0-3-2-2-2%201-1%204-3%204-3%200l-1-3-1%204c0%203%201%204%204%204%202%200%203%200%203-2h1l4%202c3%200%203%200%203-5l-1-6-2%202m-71%202c-1%205%202%209%206%206l2-1c1%202%204%202%206%201h2v3c3%203%206%201%206-5%200-5%200-5-3-5l-3%201h-10c0-2-5-1-6%200'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.7543859649122806,"src":"/static/611bd147f626d59fa8f85c24f88ccc52/ee604/upwork-saphi.png","srcSet":"/static/611bd147f626d59fa8f85c24f88ccc52/69585/upwork-saphi.png 200w,\n/static/611bd147f626d59fa8f85c24f88ccc52/497c6/upwork-saphi.png 400w,\n/static/611bd147f626d59fa8f85c24f88ccc52/ee604/upwork-saphi.png 800w","srcWebp":"/static/611bd147f626d59fa8f85c24f88ccc52/58556/upwork-saphi.webp","srcSetWebp":"/static/611bd147f626d59fa8f85c24f88ccc52/61e93/upwork-saphi.webp 200w,\n/static/611bd147f626d59fa8f85c24f88ccc52/1f5c5/upwork-saphi.webp 400w,\n/static/611bd147f626d59fa8f85c24f88ccc52/58556/upwork-saphi.webp 800w","sizes":"(max-width: 800px) 100vw, 800px"}}},"stack_icons":[{"name":"Docker","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M1%201v22c2%202%2020%201%2022-1s3-22%201-21H1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":24,"height":24,"src":"/static/56da43d828dc522662791d50808cbb00/6d1ba/docker.png","srcSet":"/static/56da43d828dc522662791d50808cbb00/6d1ba/docker.png 1x,\n/static/56da43d828dc522662791d50808cbb00/a9c35/docker.png 1.5x,\n/static/56da43d828dc522662791d50808cbb00/559c9/docker.png 2x","srcWebp":"/static/56da43d828dc522662791d50808cbb00/f8bad/docker.webp","srcSetWebp":"/static/56da43d828dc522662791d50808cbb00/f8bad/docker.webp 1x,\n/static/56da43d828dc522662791d50808cbb00/f81b6/docker.webp 1.5x,\n/static/56da43d828dc522662791d50808cbb00/804d1/docker.webp 2x"}}}},{"name":"Google Cloud","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M1%201v22c2%202%2020%201%2022-1s3-22%201-21H1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":24,"height":24,"src":"/static/11c8c3d5bb464ba2f088929c7c3857c2/6d1ba/gcloud.png","srcSet":"/static/11c8c3d5bb464ba2f088929c7c3857c2/6d1ba/gcloud.png 1x,\n/static/11c8c3d5bb464ba2f088929c7c3857c2/a9c35/gcloud.png 1.5x,\n/static/11c8c3d5bb464ba2f088929c7c3857c2/559c9/gcloud.png 2x","srcWebp":"/static/11c8c3d5bb464ba2f088929c7c3857c2/f8bad/gcloud.webp","srcSetWebp":"/static/11c8c3d5bb464ba2f088929c7c3857c2/f8bad/gcloud.webp 1x,\n/static/11c8c3d5bb464ba2f088929c7c3857c2/f81b6/gcloud.webp 1.5x,\n/static/11c8c3d5bb464ba2f088929c7c3857c2/804d1/gcloud.webp 2x"}}}},{"name":"WooCommerce","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='41'%20height='24'%20viewBox='0%200%2041%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M2%202l-2%209c0%209%202%2010%2013%2010l11%202h3c-1-2%200-2%205-2%209%200%2010-2%2010-11C42%200%2042%200%2021%200H3L2%202m1%203l3%2014%203-3%202-4%202%203c2%203%205%204%204%202l3-12-1-2-3%204c-1%203-1%204-2%203-1-5-2-5-4-2-2%204-4%204-4%201L4%203%203%205m19%201c-2%202-3%208%200%2010%201%202%206%200%206-2%200-3%201-2%203%200%202%206%208%202%208-4s-5-8-8-2c-1%202-1%202-2%200-1-3-5-4-7-2'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":34,"height":20,"src":"/static/22321d0587add7d6b2d7f37dc4525a62/dba72/woocommerce.png","srcSet":"/static/22321d0587add7d6b2d7f37dc4525a62/dba72/woocommerce.png 1x","srcWebp":"/static/22321d0587add7d6b2d7f37dc4525a62/e3c56/woocommerce.webp","srcSetWebp":"/static/22321d0587add7d6b2d7f37dc4525a62/e3c56/woocommerce.webp 1x"}}}},{"name":"MySQL","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M1%201v22c2%202%2020%201%2022-1s3-22%201-21H1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":24,"height":24,"src":"/static/fb76c0da90f90c016ad01e4dc810443f/6d1ba/api.png","srcSet":"/static/fb76c0da90f90c016ad01e4dc810443f/6d1ba/api.png 1x,\n/static/fb76c0da90f90c016ad01e4dc810443f/a9c35/api.png 1.5x,\n/static/fb76c0da90f90c016ad01e4dc810443f/559c9/api.png 2x","srcWebp":"/static/fb76c0da90f90c016ad01e4dc810443f/f8bad/api.webp","srcSetWebp":"/static/fb76c0da90f90c016ad01e4dc810443f/f8bad/api.webp 1x,\n/static/fb76c0da90f90c016ad01e4dc810443f/f81b6/api.webp 1.5x,\n/static/fb76c0da90f90c016ad01e4dc810443f/804d1/api.webp 2x"}}}},{"name":"API","icon":{"childImageSharp":{"fixed":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20preserveAspectRatio='none'%3e%3cpath%20d='M1%201v22c2%202%2020%201%2022-1s3-22%201-21H1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","width":24,"height":24,"src":"/static/fb76c0da90f90c016ad01e4dc810443f/6d1ba/api.png","srcSet":"/static/fb76c0da90f90c016ad01e4dc810443f/6d1ba/api.png 1x,\n/static/fb76c0da90f90c016ad01e4dc810443f/a9c35/api.png 1.5x,\n/static/fb76c0da90f90c016ad01e4dc810443f/559c9/api.png 2x","srcWebp":"/static/fb76c0da90f90c016ad01e4dc810443f/f8bad/api.webp","srcSetWebp":"/static/fb76c0da90f90c016ad01e4dc810443f/f8bad/api.webp 1x,\n/static/fb76c0da90f90c016ad01e4dc810443f/f81b6/api.webp 1.5x,\n/static/fb76c0da90f90c016ad01e4dc810443f/804d1/api.webp 2x"}}}}]}},"pageContext":{"slug":"product-customizer-coldfusion-to-foss-migration"}},"staticQueryHashes":["3724428426"]}