<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Master Key</title>
	<atom:link href="https://masterkey.software/feed/" rel="self" type="application/rss+xml" />
	<link>https://masterkey.software</link>
	<description>Software House &#38; Consulting</description>
	<lastBuildDate>Fri, 25 Jul 2025 07:23:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://masterkey.software/wp-content/uploads/Favicona-duze.png</url>
	<title>Master Key</title>
	<link>https://masterkey.software</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>AI Agents manager for Atreyus.ai</title>
		<link>https://masterkey.software/ai-agents-manager-for-atreyus-ai/</link>
		
		<dc:creator><![CDATA[Daniel Grad]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 11:05:07 +0000</pubDate>
				<category><![CDATA[Case study EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=5056</guid>

					<description><![CDATA[About the Client Atreyus.ai is a freshly founded AI startup in the bootstrapping phase, offering workflows with specialized AI agents. The Challenge Atreyus, in order to offer their customers customized workflows with AI agents, serialized data, and external functions, required a tool that could allow interaction without manual code changes.Additionally, they wanted to let the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">About the Client</h2>



<p>Atreyus.ai is a freshly founded AI startup in the bootstrapping phase, offering workflows with specialized AI agents.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" src="https://masterkey.software/wp-content/uploads/ekran-edycji-workflow-nr2.png" alt="" class="wp-image-5139" width="1919" height="1083" srcset="https://masterkey.software/wp-content/uploads/ekran-edycji-workflow-nr2.png 1919w, https://masterkey.software/wp-content/uploads/ekran-edycji-workflow-nr2-768x433.png 768w, https://masterkey.software/wp-content/uploads/ekran-edycji-workflow-nr2-1536x867.png 1536w" sizes="(max-width: 1919px) 100vw, 1919px" /></figure>



<h2 class="wp-block-heading">The Challenge</h2>



<p>Atreyus, in order to offer their customers customized workflows with AI agents, serialized data, and external functions, required a tool that could allow interaction without manual code changes.<br>Additionally, they wanted to let the user check usage statistics and manage access to the workflows on their own.</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://masterkey.software/wp-content/uploads/ekran-edycji-workflow.png" alt="" class="wp-image-5140" width="1921" height="1081" srcset="https://masterkey.software/wp-content/uploads/ekran-edycji-workflow.png 1921w, https://masterkey.software/wp-content/uploads/ekran-edycji-workflow-768x432.png 768w, https://masterkey.software/wp-content/uploads/ekran-edycji-workflow-1536x864.png 1536w" sizes="(max-width: 1921px) 100vw, 1921px" /></figure>



<h2 class="wp-block-heading">Goal</h2>



<p>To create an application frontend with an intuitive interface, minimizing any friction.</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://masterkey.software/wp-content/uploads/ekran-debugowania-workflow.png" alt="" class="wp-image-5141" width="1917" height="1866" srcset="https://masterkey.software/wp-content/uploads/ekran-debugowania-workflow.png 1917w, https://masterkey.software/wp-content/uploads/ekran-debugowania-workflow-768x748.png 768w, https://masterkey.software/wp-content/uploads/ekran-debugowania-workflow-1536x1495.png 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<h2 class="wp-block-heading">Technology Stack</h2>



<p>React.js, React Flow, Node.js, MUI</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-1.png" alt="" class="wp-image-5143" width="1715" height="1421" srcset="https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-1.png 1715w, https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-1-768x636.png 768w, https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-1-1536x1273.png 1536w" sizes="(max-width: 1715px) 100vw, 1715px" /></figure>



<h2 class="wp-block-heading">The Process</h2>



<p>We started with several consulting sessions where our designer carefully listened to the client&#8217;s ideas to comprehend their expectations and provided UI designs that materialized that vision.<br>In the meantime, we started to look for a block diagram drawing library that would best suit the requirements and our experience. We picked React Flow due to its history of reliable releases and its huge community, which could assist in investigating very specific edge cases.</p>



<p>Once the UI designs were ready, we proceeded with the implementation. One part of the team focused on the canvas, which serves as the main board where the user can draw the relationships between the system&#8217;s elements to define the information flow. Concurrently, the other part worked on the supporting features.</p>



<p>Twice a week, we synchronized our progress with the customer&#8217;s backend development team and discussed the developed API structure to ensure optimal application performance and minimize the average request size to balance the traffic.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/ekran-subskrypcji.png" alt="" class="wp-image-5145" width="1917" height="1077" srcset="https://masterkey.software/wp-content/uploads/ekran-subskrypcji.png 1917w, https://masterkey.software/wp-content/uploads/ekran-subskrypcji-768x431.png 768w, https://masterkey.software/wp-content/uploads/ekran-subskrypcji-1536x863.png 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<h2 class="wp-block-heading">Result</h2>



<p>After five months of great collaboration, we delivered Atreyus.ai—an innovative product allowing customers to create their own workflows based on AI agents.<br>The product is available for subscription at <a href="https://www.atreyus.ai" target="_blank" rel="noopener">https://www.atreyus.ai</a> .<br></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/rejestracja-7.png" alt="" class="wp-image-5144" width="1923" height="1083" srcset="https://masterkey.software/wp-content/uploads/rejestracja-7.png 1923w, https://masterkey.software/wp-content/uploads/rejestracja-7-768x433.png 768w, https://masterkey.software/wp-content/uploads/rejestracja-7-1536x865.png 1536w" sizes="(max-width: 1923px) 100vw, 1923px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cloud native MVP for a Portuguese startup</title>
		<link>https://masterkey.software/cloud-native-mvp-for-a-portuguese-startup/</link>
		
		<dc:creator><![CDATA[Daniel Grad]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 10:47:13 +0000</pubDate>
				<category><![CDATA[Case study EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=5051</guid>

					<description><![CDATA[About the Client Repete is a newly founded Portuguese startup with the goal of eliminating take-away packages.They have designed a unique and durable container system that can be tracked and reused multiple times to store various goods, reducing pollution and plastic production. The Challenge Their containers needed to be managed by both customers and stores.Additionally, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>About the Client</strong></h2>



<p>Repete is a newly founded Portuguese startup with the goal of eliminating take-away packages.<br>They have designed a unique and durable container system that can be tracked and reused multiple times to store various goods, reducing pollution and plastic production.</p>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/rejestracja-6.png" alt="" class="wp-image-5116" width="436" height="692" /></figure>
</figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/rejestracja-sukces-4.png" alt="" class="wp-image-5117" width="447" height="700" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/okranglowny-widok-sklepu-4.png" alt="" class="wp-image-5118" width="437" height="695" /></figure>
</div>
</div>



<h2 class="wp-block-heading">The Challenge</h2>



<p>Their containers needed to be managed by both customers and stores.<br>Additionally, the application had to scale to fluctuating online traffic, which peaked during the afternoon but was almost negligible at night. This scalability would also future-proof the system, eliminating the need for further redesigns as the number of users grew.<br>A serverless design was preferred to reduce infrastructure costs.</p>



<p>Since it wasn&#8217;t yet known which devices would dominate among users, a consistent interface was required, ensuring a uniform experience across all devices.</p>



<p>Users also needed to authenticate with a new password at each login to enhance account security.</p>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/ekranglowny-widok-klienta-2.png" alt="" class="wp-image-5081" width="435" height="697" /></figure>
</figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/ekranglowny-widok-klienta-pusty-4.png" alt="" class="wp-image-5080" width="436" height="705" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/ekranglowny-widok-sklepu-1.png" alt="" class="wp-image-5082" width="430" height="702" /></figure>
</div>
</div>



<h2 class="wp-block-heading">Goal</h2>



<p>To deliver:</p>



<ul class="wp-block-list">
<li>A fully serverless application that dynamically scales with traffic</li>



<li>A UI optimized for various devices, though not fully responsive</li>



<li>One-time code-based authentication</li>
</ul>



<h2 class="wp-block-heading">Technology stack</h2>



<p>Vue.js, Node.js, AWS (DynamoDB, S3, Lambda, SES, API Gateway, Cognito, CloudFormation)</p>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-3 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/inwentarz-edycja.png" alt="" class="wp-image-5121" width="441" height="705" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/inwentarz-glowna-1.png" alt="" class="wp-image-5122" width="437" height="708" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/inwentarz-statystyki-co2.png" alt="" class="wp-image-5123" width="434" height="696" /></figure>
</div>
</div>



<h2 class="wp-block-heading">Process</h2>



<p>We began with a functional requirements analysis to define the API, which served as the primary means of programmatic interaction with the application.<br>Once this phase was complete, we proceeded with the UI implementation, providing the visual interface for user interaction.</p>



<p>Each independent user flow was placed into a dedicated view, while related ones were grouped together.<br>By wrapping the application in a window resembling a mobile view, we ensured a consistent UI layout across all devices and enabled easy layout testing whenever the client requested changes, without significant overhead.<br>Ultimately, mobile users were the app’s primary audience.</p>



<p>After completing the UI, we moved on to backend development.</p>



<p>By using AWS Lambda, we implemented the core execution unit of a serverless architecture—the Lambda function. API Gateway allowed us to organize functions by their main entities, maintain multiple API versions, and manage deployment stages.</p>



<p>Cognito handled user pool management and authentication. A slight adjustment to its webhooks enabled one-time code verification without requiring additional services, preserving security while minimizing complexity.<br>SES was used to send email notifications for important events.</p>



<p>The real challenge came with designing the DynamoDB data model.<br>We used DynamoDB to minimize maintenance costs and leverage the scalability of a document database.</p>



<p>Typical relational databases use associations, where an attribute in one table references another table, allowing for correlated data retrieval in a single operation. However, this approach often results in slower queries.<br>In document-based databases, the approach differs significantly.</p>



<p>Data retrieval is nearly instantaneous (thanks to partition keys uniquely identifying each document), but structuring the data efficiently often requires splitting records into multiple structures and denormalizing them to enable flexible querying.</p>



<p>By structuring tables to store behaviors rather than entities, we minimized denormalization, achieving both high performance and maintainability.</p>



<p>CloudFormation automated code deployment and infrastructure configuration, ensuring system cohesion.</p>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-4 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/wypozyczenie-formularz.png" alt="" class="wp-image-5124" width="448" height="704" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/wypozyczenie-potwierdzenie.png" alt="" class="wp-image-5125" width="438" height="715" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/wypozyczenie-sukces.png" alt="" class="wp-image-5126" width="456" height="711" /></figure>
</div>
</div>



<h2 class="wp-block-heading">Result</h2>



<p>A mobile-friendly web application with an attractive UI, operating costs under $5/month, and the ability to handle over 10,000 concurrent users.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Another sample title for a blog article</title>
		<link>https://masterkey.software/another-sample-title-for-a-blog-article/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sun, 15 Dec 2024 10:38:57 +0000</pubDate>
				<category><![CDATA[Article EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=4655</guid>

					<description><![CDATA[What is Lorem Ipsum? Lorem Ipsum&#160;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#8217;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">What is Lorem Ipsum?</h2>



<p><strong>Lorem Ipsum</strong>&nbsp;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#8217;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>



<h3 class="wp-block-heading">Why do we use it?</h3>



<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using &#8216;Content here, content here&#8217;, making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for &#8216;lorem ipsum&#8217; will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>



<h4 class="wp-block-heading">Where does it come from?</h4>



<p>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of &#8220;de Finibus Bonorum et Malorum&#8221; (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, &#8220;Lorem ipsum dolor sit amet..&#8221;, comes from a line in section 1.10.32.</p>



<p>The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from &#8220;de Finibus Bonorum et Malorum&#8221; by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem.webp" alt="Programista Master Key tworzy dedykowane rozwiązanie IT" class="wp-image-2892" width="1200" height="839" srcset="https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem.webp 1200w, https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-300x210.webp 300w, https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-1024x716.webp 1024w, https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-768x537.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption">Programista Master Key tworzy dedykowane rozwiązanie IT</figcaption></figure>



<h5 class="wp-block-heading">Where can I get some?</h5>



<p>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don&#8217;t look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn&#8217;t anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>This is a sample title for a blog article</title>
		<link>https://masterkey.software/this-is-a-sample-title-for-a-blog-article/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sun, 15 Dec 2024 10:32:46 +0000</pubDate>
				<category><![CDATA[Article EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=4641</guid>

					<description><![CDATA[What is Lorem Ipsum? Lorem Ipsum&#160;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#8217;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">What is Lorem Ipsum?</h2>



<p><strong>Lorem Ipsum</strong>&nbsp;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#8217;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>



<h3 class="wp-block-heading">Why do we use it?</h3>



<p>It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using &#8216;Content here, content here&#8217;, making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for &#8216;lorem ipsum&#8217; will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).</p>



<h2 class="wp-block-heading">Where does it come from?</h2>



<p>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of &#8220;de Finibus Bonorum et Malorum&#8221; (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, &#8220;Lorem ipsum dolor sit amet..&#8221;, comes from a line in section 1.10.32.</p>



<p>The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from &#8220;de Finibus Bonorum et Malorum&#8221; by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-1024x716.webp" alt="Programista Master Key tworzy dedykowane rozwiązanie IT" class="wp-image-2892" width="1024" height="716" srcset="https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-1024x716.webp 1024w, https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-300x210.webp 300w, https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem-768x537.webp 768w, https://masterkey.software/wp-content/uploads/2022/12/Zespol- z-miedzynarodowym-doswiadczeniem.webp 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Programista Master Key tworzy dedykowane rozwiązanie IT</figcaption></figure>



<h4 class="wp-block-heading">Where can I get some?</h4>



<p>There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don&#8217;t look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn&#8217;t anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>We have created a market research platform</title>
		<link>https://masterkey.software/stratega/</link>
		
		<dc:creator><![CDATA[Daniel Grad]]></dc:creator>
		<pubDate>Fri, 22 Sep 2023 11:18:15 +0000</pubDate>
				<category><![CDATA[Case study EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=3971</guid>

					<description><![CDATA[About the client Stratega is a leading market research company providing its services across several central and eastern European countries. They specialize in many markets, such as FMCG, healthcare, pharmaceutical, automotive, banking, insurance, power sector, telecommunications and durable goods, offering qualitative and quantitative research. The challenge Stratega wanted to expand and conquer the market by [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">About the client</h2>



<p>Stratega is a leading market research company providing its services across several central and eastern European countries. They specialize in many markets, such as FMCG, healthcare, pharmaceutical, automotive, banking, insurance, power sector, telecommunications and durable goods, offering qualitative and quantitative research.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/main.png" alt="" class="wp-image-4005" id="4005" width="1832" height="1068" srcset="https://masterkey.software/wp-content/uploads/main.png 1832w, https://masterkey.software/wp-content/uploads/main-768x448.png 768w, https://masterkey.software/wp-content/uploads/main-1536x895.png 1536w" sizes="(max-width: 1832px) 100vw, 1832px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/register.png" alt="" class="wp-image-4007" id="4007" width="1846" height="1067" srcset="https://masterkey.software/wp-content/uploads/register.png 1846w, https://masterkey.software/wp-content/uploads/register-768x444.png 768w, https://masterkey.software/wp-content/uploads/register-1536x888.png 1536w" sizes="(max-width: 1846px) 100vw, 1846px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/login.png" alt="" class="wp-image-4008" id="4008" width="1846" height="1067" srcset="https://masterkey.software/wp-content/uploads/login.png 1846w, https://masterkey.software/wp-content/uploads/login-768x444.png 768w, https://masterkey.software/wp-content/uploads/login-1536x888.png 1536w" sizes="(max-width: 1846px) 100vw, 1846px" /></figure>
</figure>



<h2 class="wp-block-heading">The challenge</h2>



<p>Stratega wanted to expand and conquer the market by automating some of their business processes and merging them into a single tool, which could be accessed not only by their employees but also by other market research companies through a platform for a fee. The solution would be innovative, because there was no product, allowing to conduct so many types of research.<br>They were also promised seed-stage funding, under the condition &#8211; that the solution would be ready in <strong>three months</strong> &#8211; which became one of the main requirements.<br>The tool was named <strong>Interviewly</strong>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/my_account.png" alt="" class="wp-image-4013" width="1845" height="1067" srcset="https://masterkey.software/wp-content/uploads/my_account.png 1845w, https://masterkey.software/wp-content/uploads/my_account-768x444.png 768w, https://masterkey.software/wp-content/uploads/my_account-1536x888.png 1536w" sizes="(max-width: 1845px) 100vw, 1845px" /></figure>



<h2 class="wp-block-heading">Goal</h2>



<p>To deliver in 3 months a product allowing to:</p>



<ul class="wp-block-list">
<li>Conduct several types of market research</li>



<li>Select one of the <strong>15 languages</strong> of the user interface</li>



<li>Invite respondents via emails</li>



<li>Evaluate the respondents with <strong>surveys</strong></li>



<li>Schedule meetings</li>



<li>Perform <strong>video calls</strong> involving multiple users, recordings, screen sharing, two audio tracks (one for the host, one for the translator) and the <strong>transcription</strong></li>



<li>Collect data about respondents</li>



<li>Be accessed by several types of devices (<strong>PCs, tablets, mobile phones</strong>)</li>



<li>Manage companies and their teams, granting them different sets of privileges</li>



<li>Notify the users about events</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/projects.png" alt="" class="wp-image-4019" width="1845" height="1066" srcset="https://masterkey.software/wp-content/uploads/projects.png 1845w, https://masterkey.software/wp-content/uploads/projects-768x444.png 768w, https://masterkey.software/wp-content/uploads/projects-1536x887.png 1536w" sizes="(max-width: 1845px) 100vw, 1845px" /></figure>



<h2 class="wp-block-heading">Technology stack</h2>



<p>React.js, Node.js, TypeScript, Python, PHP, MySQL, REST API, AWS (EC2, S3, ECR, RDS, EFS), RabbitMQ, Docker, OpenAI Whisper, Janus Gateway, Lime Survey, FFMPEG</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/project_respondents.png" alt="" class="wp-image-4020" width="1846" height="1066" srcset="https://masterkey.software/wp-content/uploads/project_respondents.png 1846w, https://masterkey.software/wp-content/uploads/project_respondents-768x443.png 768w, https://masterkey.software/wp-content/uploads/project_respondents-1536x887.png 1536w" sizes="(max-width: 1846px) 100vw, 1846px" /></figure>



<h2 class="wp-block-heading">The process</h2>



<p>Given such a short deadline, we had to act fast, but wisely. To avoid implementing everything from scratch, we decided to investigate existing solutions and integrate them with our project.</p>



<p>First, we searched for means of implementing video call functionality.<br>Our initial idea was to use WebRTC provided by WebAPI, but our research proved it dissatisfactory, because of peer-to-peer connectivity, which would grow exponentially with the number of streams. Ready solutions either did not allow white labeling or were not customizable enough to implement dual audio streams.<br>These conditions forced us to pick Janus Gateway, which on one hand is known to be one of the best media gateways in the market, but on the other requires at least basic WebRTC knowledge and is not easy to master.</p>



<p>Secondly, we had to satisfy the survey generation and evaluation need.<br>Lime Survey is the open source tool, which the customer has already been using. Considering the familiarity and an available API we decided to pick it. Unfortunately, not all the methods were exposed which hindered our progress. To overcome these issues, we had to modify the source code to initialize data in our favor and to reverse engineer the XML structure responsible for the question generation.<br>Luckily there were no further issues with this pick.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/team.png" alt="" class="wp-image-4021" width="1845" height="1066" srcset="https://masterkey.software/wp-content/uploads/team.png 1845w, https://masterkey.software/wp-content/uploads/team-768x444.png 768w, https://masterkey.software/wp-content/uploads/team-1536x887.png 1536w" sizes="(max-width: 1845px) 100vw, 1845px" /></figure>



<p>To ensure the success of such an endeavor we have picked an exceptionally skilled UI/UX designer, who worked with such famous products like Cyberpunk. He prepared designs with 3 breakpoints targeting PCs, tablets and mobile devices.</p>



<p>Knowing that the product is meant to be expanded and scaled further, we have picked AWS as the cloud provider, to set the project&#8217;s base and avoid server migration in the future.</p>



<p>As soon as we have clarified the remaining product details we have proceeded to plan the data structures reflecting the abstract entities. Numerous relations implied the use of relational databases. We picked MySQL thanks to its simplicity, and hosted it on AWS RDS. We ended up creating 20 tables to categorize all the data.</p>



<p>As soon as the style was selected and the first designs were provided we proceeded to the UI implementation and testing with mocked data.<br>Once the frontend was ready, we took care of the backend.</p>



<p>Using Janus&#8217;s Gateway we have implemented our video call client, and its server counterpart to dynamically create meetings, record them and close them when no longer needed.<br>The API and most of the backend services were implemented in Node.js, however since Whisper provides Python-only integration, we have coded the transcription services using Python.<br>Several functionalities were CPU consuming and thread blocking, thus to assure the system&#8217;s performance and API&#8217;s responsiveness they were extracted to their microservices. The most demanding ones were given their own EC2 instances with extra computing power and memory.<br>EFS allowed access to the &#8220;heavy&#8221; recording files to all of the EC2 instances, without additional transfer.<br>After the processing, all files were put into S3 buckets.<br>Another issue that we had to address was the email delivery. Considering the huge amount of emails that we would send, we had to throttle the messages to ensure delivery without labeling them as spam.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/calendar.png" alt="" class="wp-image-4022" width="1829" height="1066" srcset="https://masterkey.software/wp-content/uploads/calendar.png 1829w, https://masterkey.software/wp-content/uploads/calendar-768x448.png 768w, https://masterkey.software/wp-content/uploads/calendar-1536x895.png 1536w" sizes="(max-width: 1829px) 100vw, 1829px" /></figure>



<h2 class="wp-block-heading">Result</h2>



<p>After only <strong>3 months</strong> of intense work, we have provided an MVP of a fully responsive web application, providing all the requested features, so that the customer was able to acquire the funding and continue further development.<br>Currently, we are still improving it, to transform this MVP into a top-notch product with even more features, such as Blog or CMS.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/library.png" alt="" class="wp-image-4023" id="4023" width="1847" height="1066" srcset="https://masterkey.software/wp-content/uploads/library.png 1847w, https://masterkey.software/wp-content/uploads/library-768x443.png 768w, https://masterkey.software/wp-content/uploads/library-1536x887.png 1536w" sizes="(max-width: 1847px) 100vw, 1847px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/survey_creator.png" alt="" class="wp-image-4024" id="4024" width="1845" height="1065" srcset="https://masterkey.software/wp-content/uploads/survey_creator.png 1845w, https://masterkey.software/wp-content/uploads/survey_creator-768x443.png 768w, https://masterkey.software/wp-content/uploads/survey_creator-1536x887.png 1536w" sizes="(max-width: 1845px) 100vw, 1845px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/tablet_my_account.png" alt="" class="wp-image-4011" id="4011" width="993" height="1065" srcset="https://masterkey.software/wp-content/uploads/tablet_my_account.png 993w, https://masterkey.software/wp-content/uploads/tablet_my_account-768x824.png 768w" sizes="(max-width: 993px) 100vw, 993px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/mobile_my_account.png" alt="" class="wp-image-4012" id="4012" width="394" height="1066" /></figure>
</figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>We have created a web application to organize the delivery of goods and plan routes</title>
		<link>https://masterkey.software/we-have-created-a-web-application-to-organize-the-delivery-of-goods-and-plan-routes/</link>
					<comments>https://masterkey.software/we-have-created-a-web-application-to-organize-the-delivery-of-goods-and-plan-routes/#respond</comments>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sat, 24 Dec 2022 15:08:45 +0000</pubDate>
				<category><![CDATA[Case study EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=3109</guid>

					<description><![CDATA[About the client Kolsar Recycling is a recycling company delivering their services to several counties. The challenge Kolsar in their daily business performs numerous deliveries and collections from a huge geographical area.They had been using a simple excel sheet to keep track of their schedule, but as the company has grown, that became harder to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/kolsar_1.png" alt="" class="wp-image-3891" width="1850" height="1009" srcset="https://masterkey.software/wp-content/uploads/kolsar_1.png 1850w, https://masterkey.software/wp-content/uploads/kolsar_1-768x419.png 768w, https://masterkey.software/wp-content/uploads/kolsar_1-1536x838.png 1536w" sizes="(max-width: 1850px) 100vw, 1850px" /></figure>



<h2 class="wp-block-heading"><strong>About the client</strong></h2>



<p>Kolsar Recycling is a recycling company delivering their services to several counties.</p>



<h2 class="wp-block-heading"><strong>The challenge</strong></h2>



<p>Kolsar in their daily business performs numerous deliveries and collections from a huge geographical area.<br>They had been using a simple excel sheet to keep track of their schedule, but as the company has grown, that became harder to follow.<br>Route planning is a tedious and time consuming task, where mistakes could happen.</p>



<h2 class="wp-block-heading"><strong>Goal</strong></h2>



<p>Delivery of an application, which:</p>



<ul class="wp-block-list">
<li>Is accessible with several types of devices (desktop computers, tablets)</li>



<li>Secured and available only to the authenticated users</li>



<li>Provides different sets of capabilities for various users</li>



<li>Allows pick-up/delivery scheduling</li>



<li>Plans optimal pick-up/delivery routes</li>



<li>Maintained at minimal cost</li>
</ul>



<h2 class="wp-block-heading"><strong>Technology Stack</strong></h2>



<p>React.js, MaterialUI, Node.js, Express.js, MapQuest, Leaflet.js, MongoDB.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/kolsar_2.png" alt="" class="wp-image-3899" width="1849" height="1005" srcset="https://masterkey.software/wp-content/uploads/kolsar_2.png 1849w, https://masterkey.software/wp-content/uploads/kolsar_2-768x417.png 768w, https://masterkey.software/wp-content/uploads/kolsar_2-1536x835.png 1536w" sizes="(max-width: 1849px) 100vw, 1849px" /></figure>



<h2 class="wp-block-heading"><strong>The process</strong></h2>



<p>To achieve quick delivery time and reduce development cost a responsive web application was designed, with intent to render on two kinds of devices.<br>Reusable MaterialUI components provided &#8220;nice on the eye&#8221; look, with reduced design and development time.</p>



<p>JWT allowed secure access only to the authenticated users. All handled by Node.js engine, which was picked as the lightweight backend solution.</p>



<p>MapQuest was selected as the route optimization SaaS, which&#8217;s output was drawn on Leaflet.js map together with extra controls to manipulate the route as the delivery went on.<br>To limit quota usage, the reverse geocoding results were cached in the database with a long TTL, as these were unlikely to change.</p>



<p>MongoDB was selected as the storage backing up the backend, as it had to store geocoding data of variadic structure, and non-relative user data.</p>



<p>Purchasing a long term subscription at local hosting provider allowed to minimize the maintenance cost to 2.5$/month and no extra costs for remaining services and licences.</p>



<p>Actions separation by user roles, prevented different types of employees unprivileged actions.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/kolsar_3.png" alt="" class="wp-image-3898" width="1850" height="1005" srcset="https://masterkey.software/wp-content/uploads/kolsar_3.png 1850w, https://masterkey.software/wp-content/uploads/kolsar_3-768x417.png 768w, https://masterkey.software/wp-content/uploads/kolsar_3-1536x834.png 1536w" sizes="(max-width: 1850px) 100vw, 1850px" /></figure>



<h2 class="wp-block-heading"><strong>Result</strong></h2>



<p>With the designed solution the customer could switch from their excel files, and plan the deliveries in his office, while the drivers were able to perform their tours and notify the office whether the delivery was paid on the spot, delayed until collection, or inform about postponed collection date.</p>



<p>A single tool has taken over the planning, scheduling and settlement of payments, becoming the main mean of management.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://masterkey.software/we-have-created-a-web-application-to-organize-the-delivery-of-goods-and-plan-routes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>We have created a new, more efficient application frontend</title>
		<link>https://masterkey.software/we-have-created-a-new-more-efficient-application-frontend/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sat, 24 Dec 2022 14:45:57 +0000</pubDate>
				<category><![CDATA[Case study EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=3100</guid>

					<description><![CDATA[About the client FLIR Systems (currently part of Teledyne FLIR) is one of the biggest thermal imaging cameras manufacturer in the world. The challenge FLIR in order to test their devices and to provide new features captures huge amount of visual data (videos, photos). Some of these features involve machine learning, which must be trained [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x.png" alt="" class="wp-image-3958" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x.png 1920w, https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x-768x376.png 768w, https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">About the client</h2>



<p>FLIR Systems (currently part of Teledyne FLIR) is one of the biggest thermal imaging cameras manufacturer in the world.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x.png" alt="" class="wp-image-3959" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x.png 1920w, https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x-768x376.png 768w, https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">The challenge</h2>



<p>FLIR in order to test their devices and to provide new features captures huge amount of visual data (videos, photos). Some of these features involve machine learning, which must be trained with accurate data in order to return correct results.<br>Data preparation is a tedious task, involving careful inspection performed by teams specialized in such task.<br>In order to address those teams&#8217; needs, an internal tool with intent to gather, process and categorize the data has been created. Initially it was a small project, which over time grew into a a serious application, however lack of proper design started to take its toll.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x.png" alt="" class="wp-image-3960" width="1920" height="942" srcset="https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x.png 1920w, https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x-768x377.png 768w, https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x-1536x754.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">Goal</h2>



<p>Refresh the design and optimize an existing application, by:</p>



<ul class="wp-block-list">
<li>Rethinking product&#8217;s purpose, refactoring existing features and proposing new ones</li>



<li>Preparing new, intuitional user interface providing better user experience</li>



<li>Aligning the style with internal company&#8217;s styling guidelines</li>



<li>Improving the performance, to enhance processing teams&#8217; productivity, as in extreme cases even basic operations would take tens of seconds</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x.png" alt="" class="wp-image-3963" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x.png 1920w, https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x-768x376.png 768w, https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">Technology stack</h2>



<p>React.js, Node.js, ApolloGraphQL, RabbitMQ, AWS (EBS, SES, ECR).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x.png" alt="" class="wp-image-3964" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x.png 1920w, https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x-768x376.png 768w, https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">The process</h2>



<p>We have started with adding minor, awaiting improvements and bugfixes, to acknowledge ourselves with current solution and to learn the business domain. In the meantime, we cooperated with a UI/UX designer to produce a new look and think of new features.<br>Additionally we have optimized GraphQL queries sent in the requests to the server, to limit the amount of data returned, thus reducing the response time, in certain cases up to <strong>3x</strong>.</p>



<p>Once the first designs started to become available, we have established following order of actions:</p>



<ul class="wp-block-list">
<li>Replacement of basic components with the newly designed ones, ex. buttons, dropdowns.</li>



<li>Replacement of core application elements, ex toolbars, navigation bars.</li>



<li>Layouts redefinition with basic refactoring of the old elements, which would have to be rendered in the new layout and rendering optimization, by performing it only when it was necessary.</li>



<li>Replacement of remaining, less important elements.</li>



<li>GraphQL queries cleanup to limit unnecessary data transfer even more.</li>
</ul>



<p>As the process went on, more developers had to be involved, to provide pixel perfect implementations within a reasonable time.<br>Ultimately we have managed a team of a Project Manager, UI/UX Designer, 4 developers and a tester.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x.png" alt="" class="wp-image-3965" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x.png 1920w, https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x-768x376.png 768w, https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">Result</h2>



<p>After 15 months of work the customer received a brand new frontend application with a fresh, organized UI following company&#8217;s internal styling guidelines and performance improved by up to 300%</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x.png" alt="" class="wp-image-3966" width="1920" height="938" srcset="https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x.png 1920w, https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x-768x375.png 768w, https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x-1536x750.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>We reorganized and streamlined the software production process</title>
		<link>https://masterkey.software/we-have-implemented-a-new-web-application-for-kaholo/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 18:26:28 +0000</pubDate>
				<category><![CDATA[Case study EN]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=2845</guid>

					<description><![CDATA[Coming soon!]]></description>
										<content:encoded><![CDATA[
<p>Coming soon!</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
