O tématu své bakalářky měl Hai Hung Nguyen brzy jasno: „Moji rodiče vlastní malý obchod a již několik let se potýkají s problémy spojenými s používáním drahého pokladního systému“. Absolvent informatiky na Matfyzu propojil několik technologií a vytvořil variabilní pokladní software určený pro malé podnikatele. „I v rámci bakalářského projektu je možné vytvořit plně funkční systém, který najde reálné využití v praxi,“ říká.
Mohl byste stručně představit svou práci?
Tato bakalářská práce se zabývá vývojem pokladního systému (POS – Point of Sale) pro malé a střední prodejny. Hlavním cílem bylo vytvořit uživatelsky přívětivý a cenově dostupný systém, který by mohl konkurovat existujícím, často složitým a drahým řešením na trhu.
Toto řešení představuje alternativu k existujícím systémům, která je dostupnější pro menší podnikatele a začínající firmy, kteří potřebují spolehlivý, ale ne příliš složitý pokladní systém.
Co vás inspirovalo k tomu, abyste se zaměřil právě na toto téma?
Hlavním důvodem pro výběr tohoto tématu byla moje osobní zkušenost s rodinným podnikáním. Moji rodiče vlastní malý obchod a již několik let se potýkají s problémy spojenými s používáním drahého pokladního systému. Nejen že platí vysoké měsíční poplatky za software, ale v případě technických problémů musí čekat na příjezd technika, což představuje další významné náklady a může to způsobit i dočasné přerušení provozu.
Možnost vyvinout systém, který by reálně pomohl mé rodině a potenciálně i dalším menším podnikatelům v podobné situaci, pro mě představuje silnou motivaci pro zpracování tohoto tématu.
Testování systému
Jaký konkrétní přínos má vaše práce?
Software aktuálně funguje v našem rodinném obchodě jako lokální pokladní systém. I když není tak propracovaný jako komerční řešení velkých firem, jeho hlavní výhodou je open-source licence, která umožňuje komunitě vývojářů systém vylepšovat a přidávat nové funkce. Díky tomu, že je zdrojový kód volně dostupný, může software využít kdokoliv další a přizpůsobit si ho podle svých potřeb. Hlavním přínosem je výrazné snížení nákladů pro malé podnikatele a možnost rychlých úprav bez nutnosti platit za technickou podporu.
S jakými technologiemi jste pracoval a proč jste si vybral zrovna tyto?
Při vývoji našeho pokladního systému jsem se rozhodl využít moderní webové technologie, a to kvůli tomu, že web se dá spustit téměř na každém zařízení. Na frontend jsem zvolil Next.js, pro vytvoření interaktivní prostředí pro uživatele. Aby aplikace vypadala profesionálně a moderně, použil jsem komponenty z knihovny Ant Design UI. Pro bezpečné přihlašování uživatelů jsem implementoval knihovnu NextAuth.
Backend jsem postavil na Django frameworku, který jsem si vybral hlavně kvůli jeho spolehlivosti a zabudovaným bezpečnostním funkcím. Pro komunikaci mezi frontendem a backendem jsem využil Django REST Framework. Data ukládám do PostgreSQL databáze, která skvěle spolupracuje s Djangem a poskytuje spolehlivé řešení pro správu dat.
Aby bylo nasazení aplikace co nejjednodušší a fungovalo stejně na různých systémech, zabalil jsem celou aplikaci do Dockeru. Nginx používám jako prostředníka pro směrování požadavků mezi frontendem a backendem. Pro bezpečné ověřování uživatelů jsem implementoval JWT tokeny.
Díky této kombinaci technologií se mi podařilo vytvořit moderní webovou aplikaci, která může běžet na jakémkoliv operačním systému. Tyto technologie jsem vybral především proto, že jsou spolehlivé, mají skvělou komunitu vývojářů a umožňují snadnou údržbu a rozšiřování systému do budoucna.
Co pro vás bylo nejobtížnější? Je něco, co byste zpětně udělal jinak?
Nejtěžší částí celého projektu byla samotná implementace aplikace. Vzhledem k tomu, že jsem na vývoji pracoval sám a aplikace měla obsahovat mnoho různých funkcí, bylo časově velmi náročné vše správně navrhnout a implementovat. Musel jsem řešit jak frontend, tak backend, zajistit jejich vzájemnou komunikaci, vytvořit uživatelsky přívětivé rozhraní a implementovat všechny požadované funkcionality pro správu pokladny a skladu.
Na druhou stranu, když už byla aplikace hotová, psaní samotného textu práce bylo mnohem snazší. V té chvíli jsem měl jasnou představu o tom, jak jednotlivé části systému fungují, proč jsem zvolil konkrétní řešení a jaké byly důvody pro různá rozhodnutí během vývoje. Díky praktické zkušenosti s vývojem jsem mohl lépe popsat a zdůvodnit zvolená řešení v textu práce.
Zpětně bych změnil především svůj počáteční přístup k projektu. V první polovině jsem se soustředil hlavně na psaní teoretické části práce, což se ukázalo jako méně efektivní. Bylo by lepší začít s projektem dříve a zaměřit se nejprve na samotný vývoj aplikace. Praktická implementace mi totiž poskytla mnohem jasnější pohled na problematiku a usnadnila následné psaní textu práce.
Jakým způsobem jste ověřoval výsledky své práce?
Během vývoje pokladního systému jsem se zaměřil na důkladné ověřování jeho funkčnosti a užitečnosti. Nejprve jsem provedl průzkum mezi příbuznými, kteří provozují malé obchody. Ptal jsem se jich na jejich zkušenosti se současnými pokladními systémy – co jim na nich vyhovuje, jaké funkce postrádají a s jakými problémy se potýkají. Tato zpětná vazba od reálných uživatelů mi pomohla lépe pochopit jejich potřeby a požadavky na systém.
Na technické úrovni jsem kladl velký důraz na testování backendové části aplikace. Napsal jsem rozsáhlou sadu automatizovaných testů, které ověřují správnou funkcionalitu jednotlivých komponent systému. Tyto testy zajišťují, že základní funkce jako správa produktů, práce s košíkem nebo výpočty cen fungují přesně tak, jak mají. Díky těmto testům jsem mohl průběžně ověřovat, že nově přidávané funkce nenarušují existující funkcionalitu systému.
Co považujete za nejdůležitější výsledek?
Za nejdůležitější výsledek své práce považuji skutečnost, že vytvořený pokladní systém našel reálné uplatnění v praxi. Není to jen teoretický projekt, ale fungující řešení, které aktivně přispívá ke zlepšení každodenního provozu maloobchodního podnikání.
Máte pocit, že vaše práce může být inspirací pro další studenty nebo odborníky v dané oblasti?
Věřím, že má práce může být inspirací pro další studenty, především v oblasti vývoje webových aplikací. Ukazuje, jak lze v rámci bakalářského projektu vytvořit plně funkční systém, který najde reálné využití v praxi, a nabízí zajímavá řešení běžných problémů při vývoji podobných aplikací.
Jaké máte plány do budoucna?
V současné době systém aktivně udržuji, přidávám nové funkce a opravuji případné chyby. Vývoj tohoto projektu mi významně pomohl i v mé profesní kariéře, protože jsem díky němu získal praktické zkušenosti s moderními webovými technologiemi. Ve svém volném čase pracuji na novém systému, který bude vycházet z tohoto současného řešení.
Odkaz na práci: