diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
new file mode 100644
index 0000000..54d50cf
--- /dev/null
+++ b/.github/workflows/run-tests.yml
@@ -0,0 +1,20 @@
+on: [ push ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+ - name: Maven cache packages
+ uses: actions/cache@v2.1.3
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+ - name: Build with Maven
+ run: mvn --batch-mode --update-snapshots -DskipTests=true compile package install
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8080e8f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+# Idea
+.idea/
+target
+B-OOP-2023-exam-RT.iml
+
+# VS code
+.settings/
+.classpath
+.project
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0cba5d9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,218 @@
+# Riadny termín OOP \[60b], 23.05.2023 11:00
+B-OOP 2023
+
+Vytvorte oknovú aplikáciu, ktorá umožní používateľovi kresliť farebnú reťaz s geometrickými tvarmi pomocou pohybu myši.
+Aplikácia bude mať nasledovnú funkcionalitu (40 bodov):
+
+1. Vytvorenie hlavného okna, ktoré bude obsahovať funkčné Ovládacie prvky a Kresliacu plochu \[9b].
+2. Kreslenie čiary \[5b].
+3. Kreslenie geometrických tvarov na čiare \[10b].
+4. Vplyv ovládacích prvkov na vykresľovanie \[10b].
+5. Vykresľovanie farebného gradientu \[5b].
+6. Zatvorenie aplikácie cez tlačidlo na zatvorenie aplikácie poskytnuté operačným systémom \[1b].
+
+## Podrobný popis k bodu 1:
+
+Väčšinu plochy okna bude zaberať Kresliaca plocha. V bočnej časti okna (vľavo, alebo vpravo) sa budú nachádzať Ovládacie
+prvky. Ovládacie prvky budú tvoriť:
+1. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) s vertikálnym usporiadaním, rozsah 20-200, krok 10, počiatočná hodnota 50, na výber dĺžky reťaze
+2. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) s vertikálnym usporiadaním, rozsah 1-20, krok 1, počiatočná hodnota 5, na výber polomeru kreslených tvarov
+3. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) s vertikálnym usporiadaním, rozsah 1-20, krok 1, počiatočná hodnota 5, na výber odstupu medzi tvarmi
+4. 3x [JLabel](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JLabel.html) popisujúci každý zo sliderov (umiestnený nad alebo pod sliderom ku ktorému prislúcha)
+5. [JCombobox](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JComboBox.html) na výber kreslených tvarov na reťazi (kruh, štvorec, presípacie hodiny), počiatočná hodnota je kruh
+
+Rozloženie ovládacích prvkov by malo byť približne ako na obrázku. Slideri snapujú na zvolený krok.
+
+![GUI](readme-images/gui.png)
+
+## Podrobný popis k bodu 2:
+
+Keď sa pohne (alebo dragne) myš, tak sa jej aktuálna pozícia uloží na začiatok zoznamu súradníc.
+Pokiaľ pridanie bodu predĺži zoznam na viac prvkov, ako je maximálna dĺžka reťaze, nadbytočné prvky z konca zoznamu budú odstránené.
+
+Čiara sa vykresľuje medzi prvý a druhým, druhým a tretím, ..., pred-posledným a posledným bodom zoznamu.
+
+Segmenty čiary (a tvary z bodu 3), ktoré sa nachádzajú bližšie ku začiatku zoznamu prekrývajú tie, ktoré sa nachádzajú neskôr v zozname.
+
+## Podrobný popis k bodu 3:
+
+Na bodoch z ktorých sa skladá reťaz sa vykresľujú zvolené tvary. Stred tvaru je bod reťaze a veľkosť tvaru je určená aktuálnou hodnotou polomeru.
+Tvary sa nemusia vykresľovať v každom bode reťaze, to určuje aktuálne zvolený odstup.
+
+Keď je odstup 1, tak sa vykresľujú v každom bode, keď 2 tak v každom druhom, atď.
+Tvar sa vždy vykresľuje na prvom bode zoznamu (index 0 je deliteľný ľubovoľným číslom).
+Tvar sa taktiež vždy vykresľuje na poslednom bode zoznamu, aj keby jeho index nebol deliteľný zvoleným odstupom.
+
+![Tvary](readme-images/shapes.svg)
+
+## Podrobný popis k bodu 4:
+
+Ovládacie prvky menia parametre vykreslovania a ich zmena sa okamžite prejaví na vykresľovacej ploche.
+Počiatočné parametre vykresľovania sú totožné s počiatočnou hodnotou ovládacích prvkov.
+
+Keď sa zväčší dĺžka reťaze tak sa do nej pridajú nové body postupne pri pohybe myši.
+Keď sa tento počet zmenší, tak sú body z reťaze odstránené okamžite.
+
+Keď sa zmení polomer, alebo odstup, tak sa automaticky prekreslia tvary (zmenia svoju veľkosť, resp. sa poposúvajú na nové pozície na reťazi).
+
+Keď sa zmení aktuálne zvolený tvar, tak sa automaticky prekreslia všetky tvary na novo zvolený.
+
+## Podrobný popis k bodu 5:
+
+Segmenty reťaze a tvary na nej majú farbu podľa svojej pozície v reťazi.
+
+Segmenty v reťazi spoločne tvoria nejaký lineárny farebný gradient, napríklad:
+
+* prechod z červenej do čiernej
+* prechod z modrej do žltej
+* prechod po farbách dúhy v HSV farebnom priestore [Color.getHSBColor()](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Color.html#getHSBColor(float,float,float))
+
+Pri tvorbe gradientu nepoužívajte bielu farbu.
+
+Gradient závisí od nastavenej maximálnej dĺžky reťaze, aby prvý prvok bol vždy na začiatku postupnosti farieb a posledný vždy na konci
+(veľkosť kroku v priestore farieb sa mení podľa maximálnej dĺžky).
+
+## Hodnotenie
+
+Projekt obsahuje github pipeline, ktorá kontroluje skompilovateľnosť programu. **Pokiaľ program nie je skompilovateľný nebude hodnotený a skúška bude hodnotená 0b!**
+
+**Pokiaľ budete počas skúšky pristihnutý pri podvádzaní, alebo bude váš kód vykazovať príliš veľkú podobnosť s kódom iných študentov, bude skúška hodnotená 0 bodmi!**
+
+Okrem funkcionality budú hodnotené aj princípy Objektovo orientovaného programovania (20 bodov), budeme hodnotit približne rovnaké veci ako pri druhom zadaní, pre istotu uvádzame niektoré z nich:
+
+* správne modifikátory prístupu,
+* vhodné pomenovanie tried a metód,
+* vhodné využitie dedenia a polymorfizmu
+* vhodné použitie výnimiek na ošetrenie nedovoleného správania (nehádzať a nezachytávať všeobecnú triedu Exception),
+* stavové premenné ako int alebo String,
+* duplicitný kód,
+* unused kód,
+* nedodržanie konvencií,
+* použitie keyStroke,
+* použitie vnorených tried (nested class),
+* použitie statických metód alebo nekonštantných statických premenných,
+* celá aplikácia naprogramovaná v jednej triede,
+* inicializacia atributov triedy pri ich vytvoreni,
+* kontrola kláves bez java konštánt (VK_),
+* vykreslovanie textu cez kresliacu plochu,
+* keyListener prestane fungovať po stlačení niečoho v menu,
+* Null layout
+
+Za každy nedostatok vám možu byť strhnuté cca 3-4 body.
+
+Pokiaľ vaše riešenie neobsahuje dostatok implementácie je maximálny počet bodov z OOP znížený priamo úmerne s množstvom implementácie, podľa názoru hodnotiaceho.
+
+## Odovzdanie
+
+Vypracovanie skúšky odovzdajte cez Github classroom vykonaním commit a push zdrojového kódu do vášho repozitára v skupine Interes-Group (tak ako na zadaniach). Hodnotí sa posledný pushnutý commit pred časom ukončenia skúšky (bude oznámený po začatí skúšky). Odovzdáva sa obsah celého projektu. Na vypracovanie písomky je vyhradený čas 3 hodiny.
+
+---------------------------------------------------------------------------------------
+
+# Exam RT OOP \[60b], 23.05.2023 11:00
+B-OOP 2023
+
+Your task is to create a java window application.
+The application allows the user to draw a chain of lines and geometric shapes by moving the mouse.
+The application has the following functionality (40 points):
+
+1. Creation of the main window, that will contain control elements and a drawing area \[9b].
+2. Drawing the lines of the chain \[5b].
+3. Drawing the geometric shapes on the chain \[10b].
+4. Influencing the drawn chain with the control elements \[10b].
+4. Drawing a color gradient \[5pts].
+5. Closing the application with the "close window" button provided by the operating system \[1pt].
+
+## Description for bullet point 1:
+Most of the window area will be covered by the drawing area.
+The side of the window (left or right) will contain the control elements. The control elements consist of:
+1. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) with vertical layout, range 20-200, step 10, initial value 50, for choosing the length of the chain
+2. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) with vertical layout, range 1-20, step 1, initial value 5, for choosing the radius of the geometric shapes
+3. [JSlider](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JSlider.html) with vertical layout, range 1-20, step 1, initial value 5, for choosing the spacing of the geometric shapes
+4. 3x [JLabel](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JLabel.html) labeling each of the sliders (placed above, or below the slider it labels)
+5. [JCombobox](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/JComboBox.html) for choosing the drawn geometric shape (circle, square, hourglass), initial value is cirlce
+
+The elements should be layed out similarly to the picture. The sliders snap to the ticks of the specified step.
+
+![GUI](readme-images/gui.png)
+
+## Description for bullet point 2:
+
+When the mouse is moved (or dragged), its current position will be saved in the front of a list of points.
+If adding the new positions increases the size of the list beyond the maximal size of the chain, the superfluous elements will be removed from the end of the list.
+
+A line is drawn between the first and second, the third and fourth, ... the one-before-last and the last element of the list.
+
+Lines (and geometric shapes from bullet point 3) corresponding to elements closer to the start of the list are drawn above shapes corresponding to elements later in the list.
+
+## Description for bullet point 3:
+
+Geometric shapes are drawn at the points that make up the chain.
+The center of the shape is the point on the chain and the size is determined by the selected radius.
+Shapes must not necessarily be drawn at every point in the chain, that is determined by the selected spacing.
+
+If the spacing is 1, then the shapes are drawn at every point. If the spacing is 2, then at every other point and so on.
+A shape is always drawn at the first point in the chain (index 0 is divisible by any number).
+A shape is always drawn at the last point in the chain, even if its index is not divisible by the current spacing.
+
+![Shapes](readme-images/shapes.svg)
+
+## Description for bullet point 4:
+
+The control elements change the settings for drawing the chain. When a control element value changes the drawn chain is affected immediately.
+The initial values of the control elements correspond to the initial settings for drawing the chain.
+
+When the length of the chain increases, new points are added only after moving the mouse.
+When the length of the chain decreases, superfluous points are removed immediately.
+
+When the radius or spacing of the geometric shapes changes, the shapes are immediately repainted (they change their size, or change their spacing on the chain respectively).
+
+When the selected shape changes, all drawn geometric shapes are replaced with the new shape.
+
+## Description for bullet point 5:
+
+The line segments of the chain and the geometric shapes have a color based on their position in the chain.
+
+The colors of the chain is a linear gradient of some kind. For example:
+
+* transition from red to black
+* transition from blue to yellow
+* transition through the colors of the rainbow in the HSV color space [Color.getHSBColor()](https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Color.html#getHSBColor(float,float,float))
+
+Don't use the color white as part of your gradient.
+
+The gradient depends on the maximal length of the chain. The first element should correspond to the first color and the
+last element should correspond to the second color of the gradient (the step-size in the color space depends on the maximal length of the chain).
+
+## Grading
+
+The project contains a github pipeline, that checks whether it can be compiled or not. **If the program cannot be compiled it will not be graded and 0 points will be received for the exam!**.
+
+**If you are caught cheating during the exam, or if the source code handed in by you will have a suspicious amount of similarities with the code of other students 0 points will be received for the exam!**
+
+Appart from the functionality, the principles of Object-Oriented Programming will be graded as well (20 pts), pay close attention especially to:
+
+* correct access modifiers,
+* appropriate naming of classes and methods,
+* appropriate use of inheritance and polymorphism,
+* appropriate use of exceptions for handling illegal behavior (do not throw or catch the generic Exception class),
+* usage of int or String state variables,
+* duplicate code,
+* unused code,
+* usage of the java language conventions,
+* usage of keyStroke,
+* usage of nested classes,
+* usage of static methods or non-final static variables,
+* the entire application being coded in one class,
+* initialisation of class attributes at declaration,
+* comparing key codes without the java constants (VK_),
+* drawing text over the drawing area,
+* keyListener stops working when a menu element is clicked,
+* Null layout
+
+For each mistake you may lose around 3-4 points.
+
+If your solution does not contain enough implementation, the maximum points that you can obtain for OOP may be changed accordingly, at the discretion of the examiner.
+
+## Handing in the assigment
+
+Hand in the assignment into your Github classroom repository located under the Interes-Group for this exam. Hand in the entire project. You have 3 hours to complete the exam.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f877013
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ sk.stuba.fei.uim.oop
+ B-OOP-2023-exam-RT
+ 1.0-SNAPSHOT
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+
+
+
+
+ 11
+ 11
+
+
+
diff --git a/readme-images/gui.png b/readme-images/gui.png
new file mode 100644
index 0000000..9265a16
Binary files /dev/null and b/readme-images/gui.png differ
diff --git a/readme-images/shapes.svg b/readme-images/shapes.svg
new file mode 100644
index 0000000..843fe71
--- /dev/null
+++ b/readme-images/shapes.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/sk/stuba/fei/uim/oop/ExamRT.java b/src/main/java/sk/stuba/fei/uim/oop/ExamRT.java
new file mode 100644
index 0000000..45e24a7
--- /dev/null
+++ b/src/main/java/sk/stuba/fei/uim/oop/ExamRT.java
@@ -0,0 +1,7 @@
+package sk.stuba.fei.uim.oop;
+
+public class ExamRT {
+ public static void main(String[] args) {
+
+ }
+}