Master's Thesis

Template Generator for Graphical User Interfaces of Web Applications Built on the OIDIS Platform

Final Thesis 1.38 MB

Author of thesis: Ing. Dmytro Dovhalenko

Acad. year: 2025/2026

Supervisor: Ing. Jiří Hynek, Ph.D.

Reviewer: Ing. Radek Hranický, Ph.D.

Abstract:

The aim of this thesis is to develop a graphical editor for designing the visual parts of web pages based on the Bootstrap library. The main idea is to enable users to quickly create web pages and their components using visual elements, without requiring extensive knowledge of frontend implementation. The application will automatically generate code ready for development on the Oidis platform, eliminating the need for repeated manual modifications of the designed pages. The result of this work will be a graphical editor whose output code is fully compatible with the Oidis platform.

Keywords:

Visual editor, user interface design, Bootstrap, GrapesJS, low-code, code generation, drag-and-drop, hybrid web application, component-based architecture.

Date of defence

23.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaBznamka

Grading

B

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Topics for thesis defence

  1. Proč jste se rozhodl postavit editor právě na knihovně GrapesJS?
  2. Současné řešení předpokládá, že zdrojový soubor odpovídá očekávané šabloně s vyznačenými částmi pro generovaný kód. Jak byste řešil komponenty, které tyto bloky neobsahují nebo byly ručně upraveny nestandardním způsobem? Bylo by možné využít např. TypeScript Compiler API?
  3. Jak jste vyhledával použitou literaturu? Jak jste hodnotil relevanci?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Application Development (NADE)

Composition of Committee

prof. RNDr. Alexandr Meduna, CSc. (předseda)
doc. RNDr. Jitka Kreslíková, CSc. (místopředseda)
Ing. Vladimír Bartík, Ph.D. (člen)
Ing. Jiří Hynek, Ph.D. (člen)
Ing. Jan Pluskal, Ph.D. (člen)
Ing. Marta Jaroš, Ph.D. (člen)

Supervisor’s report
Ing. Jiří Hynek, Ph.D.

Student ke své práci přistupoval svědomitě a dokázal pracovat samostatně. Vytvořil použitelné řešení, které bude integrováno do vývojového procesu firmy Oidis Solutions. Navrhuji hodnocení stupněm A.

Evaluation criteria Verbal classification
Informace k zadání

Zadání vzniklo ve spolupráci s firmou Oidis Solutions. Hlavními úkoly bylo navrhnout a implementovat grafický editor Oidis Studio pro vizuální navrhování uživatelského rozhraní webových aplikací založených na knihovně Bootstrap, který nahradí dosavadní Bootstrap Studio a zajistí plnou kompatibilitu s platformou Oidis. Student se musel seznámit s vývojem desktopových aplikací na platformě Chromium, s technologiemi TypeScript, HTML, JavaScript a SASS, s knihovnou GrapesJS, frameworkem Bootstrap a s principy generování kódu a komponentové architektury. Zadání hodnotím jako průměrně obtížné a považuji ho za splněné.

Aktivita při dokončování

Některé části technické zprávy byly dokončovány na poslední chvíli a mohly být konzultovány o něco lépe.

Publikační činnost, ocenění

Výsledný editor bude využit ve firmě Oidis Solutions pro vývoj projektů ve frameworku Oidis.

Práce s literaturou

Student prostudoval doporučenou literaturu a aktivně si vyhledával další zdroje týkající se zejména tvorby frontendových řešení, multiplatformního vývoje a frameworku Oidis.

Aktivita během řešení, konzultace, komunikace

Student komunikoval během celého akademického roku. Konzultace probíhaly online s vedoucím práce a přímo ve firmě Oidis Solutions s konzultantem – panem Ing. Jakubem Cieslarem. Student řádně plnil zadané úkoly a práce postupovala dobrým tempem.

Points proposed by supervisor: 90

Grade proposed by supervisor: A

Reviewer’s report
Ing. Radek Hranický, Ph.D.

Pan Dovhalenko řešil praktický problém a vytvořil funkční prototyp editoru, který může pomoci vývojářům na platformě Oidis. Silnou stránkou práce je kvalitní analýza současného stavu, jasná motivace výsledného řešení a užitečný realizační výstup. Slabší stránkou je nedostatečně propracovaný popis návrhu, implementace a testování. Práci hodnotím jako dobrou.

Evaluation criteria Verbal classification Points
Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Dle https://app.fit.vut.cz/theses-checker práce čítá 71.01 normostran. Je tedy v obvyklém rozsahu.

Prezentační úroveň technické zprávy

Práce má logickou strukturu a jednotlivé kapitoly na sebe navazují. Teoretická část je zpracována velmi pěkně, obsah je vysoce relevantní řešenému tématu a poskytuje potřebný kontext k webovým aplikacím, vizuálním editorům a platformě Oidis. Za nejzdařilejší považuji kapitolu 4, kde student přímo navazuje na předchozí popis platformy Oidis a dobře vysvětluje, proč běžné vizuální editory typu Bootstrap Studio nejsou pro dané použití dostačující. Dále zde jasně definuje konkrétní požadavky na výsledný editor.

V práci mi chybí detailnější popis architektury řešení. Kapitola 5 popisuje uživatelský postup a stručný návrh uživatelského rozhraní. V sekci 6.1 se objevuje určitý náznak návrhu architektury, avšak pro diplomovou práci není dostačující. Očekával bych ucelený popis hlavních komponent editoru a především způsobu, jak návrh zohledňuje požadavky z kap. 4, např. editaci drag-and-drop, synchronizaci editace HTML/CSS s vizuálním editorem a responzivní náhled podle Bootstrap breakpointů. Chybí také přehled skutečně podporovaných komponent Bootstrap/Oidis a zdůvodnění volby knihovny GrapesJS oproti jiným možným technologiím. Implementační kapitola pak více popisuje výslednou funkcionalitu než vnitřní realizaci řešení. Oceňuji však přílohy, které vhodně dokreslují podobu aplikace.

Testovací kapitola vysvětluje, že výsledná aplikace byla funkčně ověřena a vyzkoušena také vývojáři pracujícími s platformou Oidis. Je však poměrně stručná a spíše popisná. Práci by prospěly jasněji definované testovací scénáře, očekávané výsledky a konkrétnější vyhodnocení zpětné vazby od uživatelů.

Celkově práce dobře popisuje motivaci a požadavky na vytvářené řešení. Z technické zprávy plyne, že výsledná aplikace svůj účel plní velmi dobře. Problém je, že nedostatečně vysvětluje, jak přesně jsou tyto požadavky návrhově a implementačně realizovány. Čtenář tak chápe, co aplikace "umí", ale vnitřní fungování řešení si musí z velké části domýšlet.

63
Formální úprava technické zprávy

Typografická stránka práce je převážně v pořádku. Klíčové pojmy jsou písmem vhodně odlišeny, obrázky jsou čitelné a vhodně odkazovány z textu. Oceňuji také seznam obrázků. Drobným nedostatkem je nedodržování pravidel pro psaní výčtů, kdy položky všude začínají velkým písmenem a končí tečkou, aniž by vždy šlo o věty. Dále musím vytknout všudypřítomné tečky za "viz".

Text je psán velmi pěknou odbornou češtinou a je dobře srozumitelný. Student přiznává použití ChatGPT pro revizi technické zprávy, což s ohledem na skutečnost, že není rodilým mluvčím, považuji za opodstatněné. Jazykových chyb je v práci minimum, vesměs jde o místy chybnou diakritiku, např. "uprav" x "úprav", "pomoci" x "pomocí" apod.

84
Práce s literaturou

Bibliografie čítá 23 zdrojů, přičemž všechny jsou relevantní řešenému tématu. Prakticky všechny převzaté pasáže jsou vhodně odzrojovány a prohřešky vůči citační etice jsem neobjevil. V práci je jeden převzatý obrázek, který je korektně označen.

Práce z velké části stojí na platformě Oidis a knihovně GrapeJS. Je proto škoda, že se zde zdroje omezují jen na poznámky pod čarou. Vzhledem k tomu, že se jedná o klíčové technologie, umístění relevantních zdrojů přímo do bibliografie by celkové kvalitě práce určitě prospělo. Interní dokumentace platformy Oidis je navíc přímo v doporučené literatuře.

V teoretické části student uvádí, že React, Angular a Vue patří mezi nejčastěji používané frameworky a že Bootstrap nebo Material UI poskytují hotové komponenty pro responzivní rozhraní. To je sice pravda, nicméně u odborné práce by bylo vhodné taková tvrzení opřít o relevantní zdroje, např. o dokumentaci nebo průzkum používanosti.

76
Realizační výstup

Realizační výstup práce tvoří prototyp grafického editoru Oidis Studio. Rozsahově studentův kód tvoří tisíce řádků v jazyce TypeScript. Aplikace je plně funkční a student mi ji osobně demonstroval. Oceňuji rozdělení na backend pro práci se soubory či extrakci tagů a frontend, který řeší zejména interakci s uživatelem, katalog komponent a responzivní náhledy. V archivu je i zkompilovaná verze pro Windows a uživatelský návod. Ve zdrojové části mne zaujal adresář "test". Funkční automatizované testy jsem v něm však hledal marně. Uvnitř se však nachází pouze "dummy" unit test, který zřejmě slouží pro obejití problémů s překladem.

Editor je funkční, vizuálně přívětivý a práce s ním je poměrně intuitivní. Někdy se ale stane, že generování kódu z neznámých důvodů zamrzne. Práce vždy začíná otevřením souboru. To je povinné i v případě, že chce uživatel vytvořit zcela novou komponentu, což je trochu zvláštní. Jistým omezením je také skutečnost, že editor vždy počítá s očekávaným formátem zdrojového kódu komponenty.

81
Využitelnost výsledků

Hlavním přínosem díla je možnost přímé práce se soubory projektů Oidis. Vývojář tak již nadále nemusí udržovat jednu verzi komponenty ve vizuálním editoru a druhou ve zdrojovém kódu aplikace. Výsledky práce tak najdou využití zejména v týmu, které tuto technologii používá. Pro plné nasazení v praxi by však bylo vhodné řešení více stabilizovat, doplnit automatizované testy a jasněji vymezit podporované komponenty.

Náročnost zadání

Evaluation level: průměrně obtížné zadání

Topics for thesis defence:
  1. Proč jste se rozhodl postavit editor právě na knihovně GrapesJS?
  2. Současné řešení předpokládá, že zdrojový soubor odpovídá očekávané šabloně s vyznačenými částmi pro generovaný kód. Jak byste řešil komponenty, které tyto bloky neobsahují nebo byly ručně upraveny nestandardním způsobem? Bylo by možné využít např. TypeScript Compiler API?
Points proposed by reviewer: 76

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová