{"id":17777,"date":"2025-08-27T14:11:33","date_gmt":"2025-08-27T12:11:33","guid":{"rendered":"https:\/\/www.centigrade.de\/?post_type=blog&#038;p=17777"},"modified":"2025-08-27T14:38:20","modified_gmt":"2025-08-27T12:38:20","slug":"my-path-to-front-end-development-of-the-continuous-product-toolkit","status":"publish","type":"blog","link":"https:\/\/www.centigrade.de\/en\/blog\/my-path-to-front-end-development-of-the-continuous-product-toolkit\/","title":{"rendered":"My path to front-end development of the Continuous Product Toolkit"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17773\" src=\"https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1.jpg\" alt=\"Flie\u00dfband Illustration\" width=\"800\" height=\"450\" srcset=\"https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1.jpg 800w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1-300x169.jpg 300w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1-768x432.jpg 768w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1-24x14.jpg 24w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1-36x20.jpg 36w, https:\/\/www.centigrade.de\/wordpress\/wp-content\/uploads\/Continuous-Product-Toolbox-1-48x27.jpg 48w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>As part of my student job at Centigrade, I was able to work on an exciting project over the past few months: the <strong>Continuous Product Toolkit (CPT)<\/strong>. This toolkit combines helpful UX tools &#8211; such as a module that checks whether an uploaded screen is accessible for people with color blindness.<!--more--><\/p>\n<p>The task of developing the <strong>front-end visualization of the generation process <\/strong>was particularly exciting for me. While a tool calculates its results &#8211; often with the support of AI &#8211; the user should be able to <strong>understand <\/strong>the process <strong>playfully and visually <\/strong>instead of just waiting for a result.<\/p>\n<h2><strong>From record player to pipeline<\/strong><\/h2>\n<p>Before implementation, the question was: <em>how can an abstract process be visualized? <\/em>Together as a team, we discussed various metaphors: from a <strong>record player<\/strong>, where each tool is a separate record, to a <strong>marble run<\/strong>, where a marble runs through the process.<\/p>\n<p>In the end, we opted for the <strong>pipeline metaphor <\/strong>&#8211; a conveyor belt with individual stations. It best suited the industrial proximity of Centigrade, characterized by partners such as Bosch, and at the same time left room for <strong>playful elements <\/strong>that emphasize our joyful mindset.<\/p>\n<h2>A box on a journey<\/h2>\n<p>The implementation looks like this:<\/p>\n<p>A small box moves from station to station on a <strong>3D conveyor belt<\/strong>. Each station symbolizes a step in the workflow &#8211; from <strong>uploading data <\/strong>to <strong>applying colour filters <\/strong>to <strong>working with AI models<\/strong>. The box contains the individual parameters and files that drive the process.<\/p>\n<h2>Immersing myself in new technologies<\/h2>\n<p>For the development, I used <strong>React Three Fiber<\/strong>, a React integration for Three.js. I created the 3D models in <strong>Blender <\/strong>and optimized them with baked textures to keep the web app performant. It was exciting for me that I had never worked with Blender before this project. It helped me all the more to complete Bruno Simon&#8217;s React Three Fiber course, which made it easier for me to get started.<\/p>\n<p>I also learned new things about <strong>coding<\/strong>. Many parts of the front end were created with <strong>Cursor<\/strong>, which allowed me to gain my first experience in &#8220;vibe coding&#8221;. This resulted in quick prototypes and I gained a better understanding of <strong>best practices <\/strong>in the use of AI programming tools.<\/p>\n<h2>From Figma design to living application<\/h2>\n<p>The basis was our <strong>Figma design<\/strong>, which we discussed intensively. The question of how playful the interface could be without distracting from the functionality was particularly exciting. In the end, we opted for a <strong>playful version of the Centigrade theme <\/strong>that emphasizes the gamification element while maintaining the clarity of the application.<\/p>\n<h2>Personal learnings and conclusion<\/h2>\n<p>The project was a journey through various disciplines for me:<\/p>\n<ol>\n<li><strong>3D modeling with Blender <\/strong>&#8211; from getting started to productive use in a short time.<\/li>\n<li><strong>React Three Fiber <\/strong>&#8211; learning to bring 3D worlds to the web with high performance.<\/li>\n<li><strong>Frontend architecture <\/strong>&#8211; mastering the balancing act between fast prototyping and clean code.<\/li>\n<li><strong>Understanding design decisions <\/strong>&#8211; experiencing how closely design and technology are linked.<\/li>\n<\/ol>\n<p>What excited me most was how <strong>creative-technical work <\/strong>and <strong>UX design <\/strong>intertwined in this project. This made my student job at Centigrade a valuable opportunity to <strong>gain real project experience at an early stage <\/strong>and at the same time experience Centigrade&#8217;s design philosophy: <strong>Making the complex visible &#8211; and creating joy in the process.<\/strong><\/p>\n","protected":false},"author":83,"featured_media":0,"template":"","tags":[840,1035,983,654],"class_list":["post-17777","blog","type-blog","status-publish","hentry","tag-ai","tag-frontend-2","tag-ki-2","tag-web-engineering-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/17777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/users\/83"}],"version-history":[{"count":1,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/17777\/revisions"}],"predecessor-version":[{"id":17778,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/blog\/17777\/revisions\/17778"}],"wp:attachment":[{"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/media?parent=17777"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.centigrade.de\/en\/wp-json\/wp\/v2\/tags?post=17777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}