<?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/pl/feed/" rel="self" type="application/rss+xml" />
	<link>https://masterkey.software</link>
	<description>Software House &#38; Consulting</description>
	<lastBuildDate>Fri, 25 Jul 2025 07:22:55 +0000</lastBuildDate>
	<language>pl-PL</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>Manager Agentów AI dla Atreyus.ai</title>
		<link>https://masterkey.software/pl/manager-agentow-ai-dla-atreyus-ai/</link>
		
		<dc:creator><![CDATA[Daniel Grad]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 12:44:15 +0000</pubDate>
				<category><![CDATA[Case study PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=5061</guid>

					<description><![CDATA[O kliencie Atreyus.ai to nowo powstały startup AI w fazie bootstrappingu, oferujący przepływy pracy z wyspecjalizowanymi agentami AI. Wyzwanie Aby oferować swoim klientom dostosowane przepływy pracy z agentami AI, zserializowanymi danymi i funkcjami zewnętrznymi, Atreyus potrzebował narzędzia, które umożliwiłoby interakcję bez ręcznych zmian w kodzie.Dodatkowo firma chciała umożliwić użytkownikom samodzielne sprawdzanie statystyk użytkowania i zarządzanie [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">O kliencie</h2>



<p>Atreyus.ai to nowo powstały startup AI w fazie bootstrappingu, oferujący przepływy pracy z wyspecjalizowanymi agentami AI.</p>



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



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



<p>Aby oferować swoim klientom dostosowane przepływy pracy z agentami AI, zserializowanymi danymi i funkcjami zewnętrznymi, Atreyus potrzebował narzędzia, które umożliwiłoby interakcję bez ręcznych zmian w kodzie.<br>Dodatkowo firma chciała umożliwić użytkownikom samodzielne sprawdzanie statystyk użytkowania i zarządzanie dostępem do przepływów pracy.</p>



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



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



<p>Stworzenie frontendu aplikacji z intuicyjnym interfejsem, minimalizującym wszelkie trudności w obsłudze.</p>



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



<h2 class="wp-block-heading">Stos technologiczny</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-2.png" alt="" class="wp-image-5150" width="1715" height="1421" srcset="https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-2.png 1715w, https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-2-768x636.png 768w, https://masterkey.software/wp-content/uploads/ekran-glowny-odblokowany-2-1536x1273.png 1536w" sizes="(max-width: 1715px) 100vw, 1715px" /></figure>



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



<p>Rozpoczęliśmy od kilku sesji konsultacyjnych, podczas których nasz projektant uważnie wysłuchał pomysłów klienta, aby zrozumieć jego oczekiwania, a następnie przygotował projekty UI, które zmaterializowały tę wizję.<br>W międzyczasie zaczęliśmy poszukiwać biblioteki do rysowania diagramów blokowych, która najlepiej odpowiadałaby wymaganiom i naszemu doświadczeniu. Zdecydowaliśmy się na React Flow ze względu na jego historię niezawodnych wydań oraz dużą społeczność, która mogła pomóc w analizie bardzo specyficznych przypadków brzegowych.</p>



<p>Gdy projekty UI były gotowe, przystąpiliśmy do implementacji. Część zespołu skupiła się na płótnie, które stanowi główną tablicę, na której użytkownik może rysować zależności między elementami systemu, definiując przepływ informacji. Równocześnie druga część zespołu pracowała nad funkcjami wspierającymi.</p>



<p>Dwa razy w tygodniu synchronizowaliśmy nasze postępy z zespołem backendowym klienta i omawialiśmy strukturę opracowywanego API, aby zapewnić optymalną wydajność aplikacji i zminimalizować rozmiar przeciętnego żądania, równoważąc ruch w systemie.</p>



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



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



<p>Po pięciu miesiącach owocnej współpracy dostarczyliśmy Atreyus.ai—innowacyjny produkt, który umożliwia klientom tworzenie własnych przepływów pracy opartych na agentach AI.<br>Produkt jest dostępny w subskrypcji pod adresem <a href="https://www.atreyus.ai" target="_blank" rel="noopener">https://www.atreyus.ai</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://masterkey.software/wp-content/uploads/rejestracja-8.png" alt="" class="wp-image-5152" width="1923" height="1083" srcset="https://masterkey.software/wp-content/uploads/rejestracja-8.png 1923w, https://masterkey.software/wp-content/uploads/rejestracja-8-768x433.png 768w, https://masterkey.software/wp-content/uploads/rejestracja-8-1536x865.png 1536w" sizes="(max-width: 1923px) 100vw, 1923px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Natywne w chmurze MVP dla portugalskiego startupu</title>
		<link>https://masterkey.software/pl/natywne-w-chmurze-mvp-dla-portugalskiego-startupu/</link>
		
		<dc:creator><![CDATA[Daniel Grad]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 10:49:21 +0000</pubDate>
				<category><![CDATA[Case study PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=5053</guid>

					<description><![CDATA[O kliencie Repete to nowo powstały portugalski startup, którego celem jest eliminacja opakowań jednorazowych w gastronomii.Firma zaprojektowała unikalny i trwały system pojemników, które można śledzić i wielokrotnie używać do przechowywania różnych produktów, ograniczając w ten sposób zanieczyszczenie środowiska oraz produkcję plastiku. Wyzwanie Pojemniki musiały być zarządzane zarówno przez klientów, jak i sklepy.Dodatkowo aplikacja musiała skalować [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>O kliencie</strong></h2>



<p>Repete to nowo powstały portugalski startup, którego celem jest eliminacja opakowań jednorazowych w gastronomii.<br>Firma zaprojektowała unikalny i trwały system pojemników, które można śledzić i wielokrotnie używać do przechowywania różnych produktów, ograniczając w ten sposób zanieczyszczenie środowiska oraz produkcję plastiku.</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">Wyzwanie</h2>



<p>Pojemniki musiały być zarządzane zarówno przez klientów, jak i sklepy.<br>Dodatkowo aplikacja musiała skalować się w zależności od ruchu online, który osiągał szczyt w godzinach popołudniowych, a nocą był prawie zerowy. Dzięki temu rozwiązaniu system był gotowy na przyszły wzrost liczby użytkowników, bez konieczności kosztownej przebudowy.<br>Zdecydowano się na architekturę serverless, aby zminimalizować koszty infrastruktury.</p>



<p>Ponieważ nie było jeszcze wiadomo, jakie urządzenia będą dominować wśród użytkowników, wymagano spójnego interfejsu, który zapewni jednolite doświadczenie na wszystkich urządzeniach.</p>



<p>Dodatkowo użytkownicy musieli logować się przy użyciu nowego hasła przy każdej sesji, co zwiększało bezpieczeństwo ich kont.</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">Cel</h2>



<p>Dostarczenie:</p>



<ul class="wp-block-list">
<li>Całkowicie <em>serverlessowej</em> aplikacji, która automatycznie skaluje się wraz z ruchem</li>



<li>Interfejsu dopasowanego do różnych urządzeń, choć bez pełnej responsywności</li>



<li>Autoryzacji opartej na jednorazowym kodzie</li>
</ul>



<h2 class="wp-block-heading">Stos technologiczny</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">Proces</h2>



<p>Rozpoczęliśmy od analizy wymagań funkcjonalnych, aby określić API, które stanowiło główny sposób programistycznej interakcji z aplikacją.<br>Po zakończeniu tego etapu przystąpiliśmy do implementacji UI, czyli warstwy zapewniającej wizualną interakcję użytkownika z systemem.</p>



<p>Każdy niezależny proces użytkownika został umieszczony w osobnym widoku, a powiązane procesy zostały pogrupowane.<br>Dzięki umieszczeniu aplikacji w oknie przypominającym widok mobilny zapewniliśmy spójny układ interfejsu na wszystkich urządzeniach oraz możliwość łatwego testowania nowych wariantów interfejsu na żądanie klienta, bez dodatkowych kosztów.<br>Ostatecznie główną grupą docelową aplikacji byli użytkownicy mobilni.</p>



<p>Po ukończeniu UI przeszliśmy do prac nad backendem.</p>



<p>Dzięki AWS Lambda wdrożyliśmy podstawową jednostkę obliczeniową architektury serverless—funkcję Lambda.<br>API Gateway umożliwiło grupowanie funkcji według głównych encji, zarządzanie wieloma wersjami API oraz utrzymywanie różnych środowisk wdrożeniowych.</p>



<p>Cognito odpowiadało za zarządzanie bazą użytkowników i autoryzację. Drobna modyfikacja webhooków pozwoliła na wdrożenie autoryzacji opartej na jednorazowym kodzie, bez konieczności dodawania dodatkowych usług, co zapewniło wysoki poziom bezpieczeństwa.<br>SES służyło do wysyłania powiadomień e-mail o ważnych zdarzeniach.</p>



<p>Największym wyzwaniem było zaprojektowanie modelu danych w DynamoDB.<br>Zastosowaliśmy DynamoDB, aby zminimalizować koszty utrzymania i wykorzystać skalowalność bazy dokumentowej.</p>



<p>W tradycyjnych relacyjnych bazach danych dane są przechowywane w postaci powiązanych tabel, gdzie jedna kolumna odwołuje się do innej, co pozwala na szybkie pobieranie powiązanych danych, lecz często kosztem długiego czasu zapytań.<br>W bazach dokumentowych podejście jest zupełnie inne.</p>



<p>Pobieranie danych jest niemal natychmiastowe (dzięki kluczom partycji, które jednoznacznie identyfikują dokumenty), jednak odpowiednie zaprojektowanie struktury wymaga podziału danych na kilka struktur oraz denormalizacji, aby umożliwić efektywne wyszukiwanie przy użyciu różnych parametrów.</p>



<p>Dzięki projektowaniu tabel pod kątem przechowywanych zachowań, a nie encji, udało nam się zminimalizować liczbę denormalizowanych tabel, zapewniając jednocześnie wysoką wydajność i łatwość utrzymania.</p>



<p>CloudFormation zautomatyzowało deployment kodu i konfigurację infrastruktury, gwarantując spójność systemu.</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">Rezultat</h2>



<p>Mobilna aplikacja webowa z atrakcyjnym interfejsem, kosztami utrzymania poniżej 5 USD miesięcznie i możliwością obsługi ponad 10 000 jednoczesnych użytkowników.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kolejny przykładowy wpis na bloga</title>
		<link>https://masterkey.software/pl/kolejny-przykladowy-wpis-na-bloga/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sun, 15 Dec 2024 10:38:57 +0000</pubDate>
				<category><![CDATA[Article PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=4658</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 '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 '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 &#8222;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, &#8222;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 &#8222;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>



<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>To jest przykładowy tytuł artykułu blogowego</title>
		<link>https://masterkey.software/pl/to-jest-przykladowy-tytul-artykulu-blogowego/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sun, 15 Dec 2024 10:32:46 +0000</pubDate>
				<category><![CDATA[Article PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=4643</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 '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 '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 &#8222;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, &#8222;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 &#8222;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>



<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>Stworzyliśmy aplikację do przeprowadzania badań rynku</title>
		<link>https://masterkey.software/pl/stworzylismy-aplikacje-do-przeprowadzania-badan-rynku/</link>
		
		<dc:creator><![CDATA[Daniel Grad]]></dc:creator>
		<pubDate>Sun, 24 Sep 2023 19:13:07 +0000</pubDate>
				<category><![CDATA[Case study PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=3988</guid>

					<description><![CDATA[O kliencie Stratega jest wiodącą firma badawczą świadczącą swoje usługi na terenie kilku krajów Europy Środkowej i Wschodniej. Specjalizują się w wielu rynkach, takich jak FMCG, opieka zdrowotna, farmaceutyczny, samochodowy, bankowy, ubezpieczeniowy, sektor energetyczny, telekomunikacyjny i dobra trwałe, oferując badania jakościowe i ilościowe. Wyzwanie Stratega chciała rozszerzyć swoją działalność i zdobyć rynek poprzez zautomatyzowanie niektórych [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">O kliencie</h2>



<p>Stratega jest wiodącą firma badawczą świadczącą swoje usługi na terenie kilku krajów Europy Środkowej i Wschodniej. Specjalizują się w wielu rynkach, takich jak FMCG, opieka zdrowotna, farmaceutyczny, samochodowy, bankowy, ubezpieczeniowy, sektor energetyczny, telekomunikacyjny i dobra trwałe, oferując badania jakościowe i ilościowe.</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">Wyzwanie</h2>



<p>Stratega chciała rozszerzyć swoją działalność i zdobyć rynek poprzez zautomatyzowanie niektórych swoich procesów biznesowych i połączenie ich w jedno narzędzie, które mogłoby być dostępne nie tylko dla ich pracowników, ale także dla innych firm badawczych poprzez platformę za opłatą. Rozwiązanie to miało być innowacyjne, ponieważ nie istniał wówczas produkt, który pozwalałby na przeprowadzenie tak wielu rodzajów badań. Obiecano im także finansowanie w fazie rozruchowej pod warunkiem, że rozwiązanie będzie gotowe w ciągu <strong>trzech miesięcy</strong> &#8211; co stało się jednym z głównych wymagań.<br>Narzędzie zostało nazwane <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">Cel</h2>



<p>Dostarczyć w ciągu 3 miesięcy produkt umożliwiający:</p>



<ul class="wp-block-list">
<li>Przeprowadzenie kilku rodzajów badań rynku</li>



<li>Wybór jednego z <strong>15 języków</strong> interfejsu użytkownika</li>



<li>Zapraszanie respondentów za pomocą e-maili</li>



<li>Ocena respondentów za pomocą <strong>ankiet</strong></li>



<li>Planowanie spotkań</li>



<li>Przeprowadzanie <strong>wideokonferencji</strong> z udziałem wielu użytkowników, nagrywaniem, udostępnianiem ekranu, dwiema ścieżkami dźwiękowymi (jedną dla gospodarza, drugą dla tłumacza) i <strong>transkrypcją</strong></li>



<li>Gromadzenie danych respondentów</li>



<li>Dostępność dla różnych rodzajów urządzeń (<strong>komputery osobiste, tablety, telefony komórkowe</strong>)</li>



<li>Zarządzanie firmami i ich zespołami, przyznawanie im różnych zestawów uprawnień</li>



<li>Powiadamianie użytkowników o wydarzeniach</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">Stos technologiczny</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">Proces</h2>



<p>Z uwagi na tak krótki termin wykonania, musieliśmy działać szybko, ale mądrze. Aby uniknąć implementowania wszystkiego od zera, postanowiliśmy zbadać istniejące rozwiązania i zintegrować je z naszym projektem.</p>



<p>Najpierw poszukiwaliśmy sposobów implementacji funkcji wideokonferencji.<br>Naszym początkowym pomysłem było użycie technologii WebRTC dostarczonej przez WebAPI, ale nasza inwestygacja wykazała, że nie jest ona zadowalająca ze względu na połączenia typu peer-to-peer, które rosłyby wykładniczo wraz z liczbą strumieni. Gotowe rozwiązania, albo nie pozwalały na dostosowanie do własnej marki, albo nie były wystarczająco konfigurowalne, aby umożliwić przekazywanie dwóch ścieżek dźwiękowych.<br>Te warunki zmusiły nas do wyboru Janus Gateway, który z jednej strony jest uważany za jedną z najlepszych bram multimedialnych na rynku, ale z drugiej wymaga przynajmniej podstawowej wiedzy o technologii WebRTC i nie jest łatwy do opanowania.</p>



<p>Następnie musieliśmy zadowolić potrzebę generacji i oceny ankiet.<br>Lime Survey to narzędzie o otwartym kodzie źródłowym, którego klient już używał. Biorąc pod uwagę to zaznajomienie i dostępność interfejsu API, postanowiliśmy je wybrać. Niestety nie wszystkie metody były dostępne co ograniczało nasz postęp. Aby przezwyciężyć te problemy, musieliśmy zmodyfikować kod źródłowy, aby dostosować dane do naszych potrzeb i odwrotną inżynierię struktur XML odpowiedzialnych za generowanie pytań. Na szczęście wystapiło więcej problemów z tym wyborem.</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>Aby zapewnić sukces takiej przedsięwzięcia, wybraliśmy wyjątkowo uzdolnionego projektanta UI/UX, który pracował nad tak znanymi produktami jak Cyberpunk. Przygotował on projekty z 3 punktami przekroju, które były dostosowane do komputerów, tabletów i urządzeń mobilnych.</p>



<p>Wiedząc, że produkt ma być rozwijany i skalowany dalej, wybraliśmy AWS jako dostawcę chmury, aby ustawić podstawy projektu i uniknąć migracji serwerów w przyszłości.</p>



<p>Szybko po wyjaśnieniu pozostałych szczegółów produktu przystąpiliśmy do planowania struktur danych odzwierciedlających abstrakcyjne jednostki. Liczne relacje wymagały użycia baz danych relacyjnych. Wybraliśmy MySQL ze względu na jego prostotę i hostowaliśmy go na AWS RDS. Stworzyliśmy 20 tabel, aby kategoryzować wszystkie dane.</p>



<p>Gdy styl został wybrany i dostarczone zostały pierwsze projekty, przystąpiliśmy do implementacji interfejsu użytkownika i testów z danymi przykładowymi. Po zakończeniu prac nad front-endem zajęliśmy się back-endem.</p>



<p>Z wykorzystaniem bramy Janus stworzyliśmy klienta wideokonferencji i jego serwerową wersję do dynamicznego tworzenia spotkań, ich nagrywania i zamykania, gdy nie są już potrzebne. API i większość usług back-endowych zostały zaimplementowane w Node.js, ale ponieważ Whisper oferuje tylko integrację z Pythonem, napisaliśmy usługi transkrypcji w języku Python. Kilka funkcji były obciążające dla procesora i blokujące wątki, dlatego aby zapewnić wydajność systemu i responsywność API, wydzieliliśmy je do swoich mikrousług. Najbardziej wymagające z nich otrzymały własne instancje EC2 z dodatkową mocą obliczeniową i pamięcią. Dzięki EFS możliwy był dostęp do &#8222;ciężkich&#8221; plików nagraniowych we wszystkich instancjach EC2 bez dodatkowego transferu. Po przetworzeniu wszystkie pliki trafiały do kubełków S3. Kolejnym problemem, który musieliśmy rozwiązać, był dostęp do dostarczania e-maili. Biorąc pod uwagę ogromną ilość wysyłanych wiadomości, musieliśmy ograniczyć ich liczbę, aby zapewnić dostarczenie ich bez oznaczania jako 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">Rezultat</h2>



<p>Po zaledwie <strong>3 miesiącach</strong> intensywnej pracy dostarczyliśmy wersję MVP w pełni responsywnej aplikacji internetowej, która oferuje wszystkie żądane funkcje, dzięki czemu klient był w stanie pozyskać finansowanie i kontynuować dalszy rozwój.<br>Obecnie nadal pracujemy nad jej ulepszaniem, aby przekształcić to MVP w produkt najwyższej jakości z jeszcze większą ilością funkcji, takich jak blog czy system zarządzania treścią (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>Stworzyliśmy aplikację webową do organizacji dostaw towarów i planowania tras</title>
		<link>https://masterkey.software/pl/stworzylismy-aplikacje-webowa-do-organizacji-i-planowania-dostaw-towarow/</link>
					<comments>https://masterkey.software/pl/stworzylismy-aplikacje-webowa-do-organizacji-i-planowania-dostaw-towarow/#respond</comments>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sat, 24 Dec 2022 15:08:45 +0000</pubDate>
				<category><![CDATA[Case study PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=3048</guid>

					<description><![CDATA[O kliencie Kolsar Recykling jest firmą zajmującą się przetwórstwem odpadów działającą na terenie kilku powiatów. Wyzwanie Kolsar w ich codziennych sprawach wykonuje wiele dostaw i odbiorów z dużego obszaru geograficznego.W swoich codziennych poczynaniach używali prostego arkusza Excel by śledzić harmonogram, lecz w miarę rozwoju firmy stawało się to coraz bardziej uciążliwe.Planowanie tras dostaw jest żmudnym [&#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">O kliencie</h2>



<p>Kolsar Recykling jest firmą zajmującą się przetwórstwem odpadów działającą na terenie kilku powiatów.</p>



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



<p>Kolsar w ich codziennych sprawach wykonuje wiele dostaw i odbiorów z dużego obszaru geograficznego.<br>W swoich codziennych poczynaniach używali prostego arkusza Excel by śledzić harmonogram, lecz w miarę rozwoju firmy stawało się to coraz bardziej uciążliwe.<br>Planowanie tras dostaw jest żmudnym zadaniem, gdzie błędy się zdarzają.</p>



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



<p>Dostarczyć aplikację, która:</p>



<ul class="wp-block-list">
<li>Jest dostepna dla wielu typów urządzeń (komputery stacjonarne, tablety)</li>



<li>Zabezpiecznona i dostępna jedynie dla użytkowników</li>



<li>Dostarcza różne zestawy funkcjonalności, uzależnione od typu użytkownika</li>



<li>Pozwala na planowanie dostaw i odbiorów</li>



<li>Planuje dostawy i odbiory wyznaczając optymalną trasę</li>



<li>Minimalizuje koszta utrzymania</li>
</ul>



<h2 class="wp-block-heading">Stos technologiczny</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">Proces</h2>



<p>By osiągnąć szybki czas dostawy i zredukować czas dewelopmentu zaprojektowano responsywną aplikację webową z zamiarem renderowania na dwóch rodzajach urządzeń.<br>Biblioteka MaterialUI dostarczyła komponentów &#8222;miłych dla oka&#8221;, jednocześnie ograniczając czas projektowania i kodowania.</p>



<p>JWT pozwoliły na bezpieczny dostęp jedynie uprawnionym użytkownikom. Wszystko zostało obsłużone przez silnik Node.js, jako lekkie rozwiązanie backendowe.</p>



<p>Serwis MapQuest został wybrany jako dostawca rozwiązania optymalizacji tras, którego wyniki wyświetlane są na mapie Leaflet.js wraz z elementami kontrolnymi w celu manipulacji trasy, w miarę realizacji dostaw.<br>By ograniczyć zużycie kwoty zapytań do serwisu, wyniki odwrotnego geokodowania są cache&#8217;owane w bazie danych z wysoką wartością TTL, ponieważ istnieje bardzo niskie prawdopodobieństwo, że się zmienią.</p>



<p>MongoDB zostało wybrane technologią przechowywania danych ze względu na zmienną strukturę danych geolokacyjnych, oraz nierelacyjną strukturę danych użytkownika.</p>



<p>Zakup długoterminowej subsktypcji u lokalnego dostawcy hostingu pozwolił na zminimalizowanie kosztów utrzymania rozwiązania do 10zł miesięcznie, oraz uniknięcie opłat za użycie zewnętrznych serwisów i licencji.</p>



<p>Rozdział funkcji użytkowników według ról, pozwolił na uniemożliwienie podejmowania niedozwolonych akcji.</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">Rezultat</h2>



<p>Dzięki stworzonemu rozwiązaniu, klient mógł przestać posugiwać się plikami Excel i planować dostawy w swoim biurze, podczas gdy kierowcy byli w stanie realizować trasy i notyfikować biuro o tym, czy dostaw została opłacona na miejscu, odroczona do czasu odbioru, lub poinformować o odroczonej czasie odbioru.</p>



<p>Pojedyncze narzędzie przejęło rolę planowania, zarządzania harmonogramem i płatnościami, stając się głównym środkiem realizacji zadań.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://masterkey.software/pl/stworzylismy-aplikacje-webowa-do-organizacji-i-planowania-dostaw-towarow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Stworzyliśmy nowy, sprawniejszy frontend aplikacji</title>
		<link>https://masterkey.software/pl/strategia-i-nowa-strona-internetowa-dla-teledyne-flir/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Sat, 24 Dec 2022 14:45:57 +0000</pubDate>
				<category><![CDATA[Case study PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=553</guid>

					<description><![CDATA[O kliencie FLIR Systems (obecnie część Teledyne FLIR) to jeden z największych na świecie producentów kamer termowizyjnych. Wyzwanie Aby testować swoje urządzenia i wprowadzać nowe funkcje, FLIR gromadzi ogromne ilości danych wizualnych – zarówno wideo, jak i zdjęć. Niektóre z tych funkcji wykorzystują uczenie maszynowe, które wymaga precyzyjnie oznaczonych danych, aby generować poprawne wyniki. Przygotowanie [&#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-1.png" alt="" class="wp-image-5163" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x-1.png 1920w, https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x-1-768x376.png 768w, https://masterkey.software/wp-content/uploads/1.2.2-Dataset-selected@2x-1-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">O kliencie</h2>



<p>FLIR Systems (obecnie część Teledyne FLIR) to jeden z największych na świecie producentów kamer termowizyjnych.</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-1.png" alt="" class="wp-image-5164" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x-1.png 1920w, https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x-1-768x376.png 768w, https://masterkey.software/wp-content/uploads/1.5.0.2.1-Search-query-advice-expanded@2x-1-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



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



<p>Aby testować swoje urządzenia i wprowadzać nowe funkcje, FLIR gromadzi ogromne ilości danych wizualnych – zarówno wideo, jak i zdjęć. Niektóre z tych funkcji wykorzystują uczenie maszynowe, które wymaga precyzyjnie oznaczonych danych, aby generować poprawne wyniki.</p>



<p>Przygotowanie danych to czasochłonny i żmudny proces, wymagający dokładnej analizy przeprowadzanej przez wyspecjalizowane zespoły. Aby usprawnić ich pracę, stworzono wewnętrzne narzędzie do zbierania, przetwarzania i kategoryzowania danych. Początkowo był to niewielki projekt, który z czasem rozrósł się w rozbudowaną aplikację. Jednak brak odpowiedniego projektu zaczął negatywnie wpływać na jej funkcjonalność i wydajność.</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-2.png" alt="" class="wp-image-5165" width="1920" height="942" srcset="https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x-2.png 1920w, https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x-2-768x377.png 768w, https://masterkey.software/wp-content/uploads/2.9.2-Frames-search-Advanced-list-view-column-filter-options@2x-2-1536x754.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



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



<p>Naszym zadaniem było odświeżenie projektu i optymalizacja istniejącej aplikacji poprzez:</p>



<ul class="wp-block-list">
<li>Przemyślenie roli produktu, refaktoryzację istniejących funkcji i zaproponowanie nowych</li>



<li>Zaprojektowanie intuicyjnego interfejsu użytkownika, poprawiającego doświadczenie użytkowników</li>



<li>Dopasowanie stylu aplikacji do wewnętrznych wytycznych firmy</li>



<li>Poprawę wydajności, aby zwiększyć efektywność zespołów przetwarzających dane – w ekstremalnych przypadkach nawet podstawowe operacje zajmowały kilkadziesiąt sekund</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-1.png" alt="" class="wp-image-5166" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x-1.png 1920w, https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x-1-768x376.png 768w, https://masterkey.software/wp-content/uploads/2.9.6-Frames-search-Graph-view-frame-preview@2x-1-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<h2 class="wp-block-heading">Stos technologiczny</h2>



<p>React.js, Node.js, Apollo GraphQL, 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-1.png" alt="" class="wp-image-5167" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x-1.png 1920w, https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x-1-768x376.png 768w, https://masterkey.software/wp-content/uploads/2.9.7-Dataset-frames-balance-as-graph@2x-1-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



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



<p>Zaczęliśmy od wdrażania drobnych usprawnień i poprawek błędów, aby zapoznać się z istniejącym rozwiązaniem i lepiej zrozumieć wymagania biznesowe. Równocześnie współpracowaliśmy z projektantem UI/UX, aby opracować nowy wygląd i zaplanować dodatkowe funkcjonalności.</p>



<p>Optymalizowaliśmy również zapytania GraphQL wysyłane do serwera, ograniczając ilość zwracanych danych, co w niektórych przypadkach skróciło czas odpowiedzi nawet trzykrotnie.</p>



<p>Gdy pierwsze projekty graficzne były gotowe, ustaliliśmy następujący harmonogram działań:</p>



<ol class="wp-block-list">
<li>Wymiana podstawowych komponentów interfejsu, takich jak przyciski i listy rozwijane.</li>



<li>Aktualizacja kluczowych elementów aplikacji, np. pasków narzędzi i nawigacji.</li>



<li>Redefinicja układów z refaktoryzacją starszych elementów, które musiały zostać dostosowane do nowego projektu, oraz optymalizacja renderowania, aby działało tylko wtedy, gdy było to konieczne.</li>



<li>Wymiana pozostałych, mniej istotnych komponentów UI.</li>



<li>Dalsza optymalizacja zapytań GraphQL w celu jeszcze większego ograniczenia zbędnego transferu danych.</li>
</ol>



<p>W miarę postępów w projekcie zaangażowano dodatkowych programistów, aby zapewnić precyzyjną realizację projektu w rozsądnym czasie. Ostatecznie zarządzaliśmy zespołem składającym się z Project Managera, projektanta UI/UX, czterech programistów i testera.</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-1.png" alt="" class="wp-image-5168" width="1920" height="940" srcset="https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x-1.png 1920w, https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x-1-768x376.png 768w, https://masterkey.software/wp-content/uploads/4.2.3.1-Video-viewer-Objects-tab-object-selected@2x-1-1536x752.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



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



<p>Po 15 miesiącach pracy klient otrzymał nową wersję aplikacji frontendowej z nowoczesnym, uporządkowanym interfejsem, zgodnym z wewnętrznymi wytycznymi firmy. Wydajność została poprawiona nawet o 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-1.png" alt="" class="wp-image-5169" width="1920" height="938" srcset="https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x-1.png 1920w, https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x-1-768x375.png 768w, https://masterkey.software/wp-content/uploads/4.3.1-Crosshair-and-annotation-guides@2x-1-1536x750.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Przeorganizowaliśmy i usprawniliśmy proces produkcji oprogramowania</title>
		<link>https://masterkey.software/pl/hello-world/</link>
		
		<dc:creator><![CDATA[krajewscy.net]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 18:26:28 +0000</pubDate>
				<category><![CDATA[Case study PL]]></category>
		<guid isPermaLink="false">https://masterkey.software/?p=1</guid>

					<description><![CDATA[Opis dostępny wkrótce]]></description>
										<content:encoded><![CDATA[
<p>Opis dostępny wkrótce</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
