Prvá obhajoba
- Vyberte si technologické črty vášho projektu. Na úspešnú obhajobu projektu si vyberte črty v minimálnej sume 16 bodov, z ktorých musíte obhájiť aspoň 10 bodov. GUI projektu musí byť naprogramované v technológii Swing alebo JavaFX.
- Nutné kritéria:
- Je potrebné, aby aplikácia plnohodnotne fungovala aj na Linuxe. Predpokladajte, že testovací počítač bude mať nainštalovaný nejaký moderný Linux, OpenJDK 21, Maven, Gradle, Docker Engine a Docker Compose.
- Aplikácia musí byť spustiteľná z príkazovej riadky. Dobrý projekt pre PAZ1c by mal byť jednoducho spustiteľný iba zopár príkazmi, napr.:
- „docker compose up“ + „mvn clean javafx:run“
- Dovolím aj viac príkazov, alebo iné príkazy, ak to bude dávať zmysel.
- Výnimkou je, ak váš projekt potrebuje napr. API kľúč k nejakej cloud službe (AWS, ChatGPT, …) – ten by však mal byť injektovateľný do vašej aplikácie napr. cez premennú prostredia, alebo cez konfiguračný súbor.
- Závislosti vašej aplikácie (knižnice, databázy, message brokers) „inštalujte“ cez:
- maven/gradle – napr. Java knižnice a embedované DB ako SQLite/H2/…,
- Docker Compose – pre samostatne spustiteľné DB ako MySQL/Elasticsearch/Redis/….
- Projekt, ktorý nebude spĺňať nutné kritéria bude hodnotený trestnými -1 až -3 bodmi.
- Na výber sú tieto technologické črty
- entity: minimálne tri entity. Hodnotenie: 2 body + 1 bod za každú ďalšiu entitu. Maximálne 6 bodov, teda max 7 entít sa hodnotí bodmi, entít však môžte mať viac, ak to má zmysel.
- okná: minimálne štyri netriviálne okná/scény (typ Stage a/alebo Scene). Okno musí obsahovať aspoň tri ovládacie prvky so zmysluplnou aktivitou, alebo pasívne zobrazovanie informácií s komplexnou funkcionalitou (t.j. napr. obsah sa musí niekde „vypočítať“ z DB). Jednoduché okná typu „O projekte“ sa nepovažujú za netriviálne. Hodnotenie: 2 body + 1 bod za každé ďalšie okno. Komplexné okno so zložitými tabuľkami, prepojenými ovládacími prvkami, filtrovaním, vlastným renderovaním bude hodnotené dodatočným 1 bodom. Maximálne sa ohodnotí 8 okien, môžte ich mať aj viac, ale už bez bodového ohodnotenia.
- SQL: využitie relačnej databázy s použitím JdbcTemplate. Hodnotenie: 2 body. Iná relačná databáza než MySQL a MariaDB: +2 body.
- NoSQL: Ak využijete NoSQL databázu, musí ísť o vhodne zvolené úložisko (t.j. hodí sa k daným dátam) a mala by sa využiť nejaká ich pokročilá funkcionalita, napr. využijú sa aj iné spôsoby získavania dát, ako len collection.getAll() a collection.getById(id). Hodnotenie: max 4 body. Tieto body sa nedajú kombinovať s bodmi za SQL.
- DAO. Využitie návrhového vzoru pre Data Access Object prístupu k databáze. Minimálne 1 DAO pre každú entitu. Hodnotenie: 2 body.
- Factory. Použitie návrhového vzoru. 1 bod
- unit testy: testovanie biznis logiky a perzistentnej vrstvy. Testovanie všetkých DAO objektov pomocou TestContainers. Hodnotenie: 3 body za pokrytie nutných tried, 0.5 boda za dodatočné triedy. Maximálne dokopy 5 bodov.
- prispôsobivý layout: Obsah okien sa vhodne prispôsobuje pri ich zmene veľkosti. 1 bod
- netradičná technológia: použitie externej, samostatne naštudovanej knižnice, sa hodnotí 1–2 bodmi v závislosti od komplexnosti použitia.
- dizajn: vizuálny návrh GUI v súlade s filozofiou či platformou sa hodnotí 1 bodom. Pekný či tvorivý dizajn sa ohodnocuje ďalším 1 bodom. Podpora svetlého a tmavého módu sa hodnotí dalším 1 bodom. (Svetlý/tmavý mód sa môže nastaviť buď cez GUI, alebo automaticky pri spustení aplikácie na základe systémovej témy.)
- viacjazyčnosť: podpora viacerých jazykov (napr. SK, CZ, EN, DE, UA, …). Potrebná podpora aspoň dvoch jazykov, kde budú preložené všetky texty v GUI. Jazyk sa pri spustení nastaví podľa systémového jazyka. Ak systémový jazyk nie je vo vašej aplikácií podporovaný, tak sa nastaví napr. angličtina. Gúglite „JavaFX i18n“ („i18n“ je skratka pre „internationalization“) pre potrebné materíály. Hodnotenie: 1 bod, pričom možnosť dodatočného prenastavenia jazyka bez nutnosti reštartu celej aplikácie sa hodnotí ďalším 1 bodom.
- kreativita: kreatívny neotrelý nápad sa hodnotí 1 až 2 bodmi
Druhá obhajoba
Druhá obhajoba sa skladá z dvoch častí:
- V prvej časti dopracovávate funkcionalitu do spriateleného projektu, ktorý vám bol pridelený.
- V druhej časti obhajujete dopracovanie vášho projektu podľa pripomienok, ktoré vám boli zaslané emailom.
V prvej časti dopracujte nasledovné technologické črty:
- Vytvorenie REST servera umožňujúceho realizovat CRUD operácie s aspoň 2 entitami. 2 body + 1 bod za viac entít. Maximálne 3 body.
- Zobrazovanie entít získaných z REST servera 3 body + 1 bod za netriviálnu transformáciu prijatých dát do TypeScriptových objektov
- Editácia entity cez React a REST server. 3 body.
- Využitie neprednášanej funkcionality: zabezpečenie REST servera, User management, alebo použitie externej, samostatne naštudovanej knižnice, sa hodnotí 1–2 bodmi v závislosti od komplexnosti použitia.
- Zverejnenie zdrojového kódu REST servera založeného na spriatelenej aplikácii na GitHub.com či inom všeobecne známom projektovom portáli pod vhodnou licenciou (so súhlasom autorov pôvodného kódu): 1 bod.