diff --git a/main.py b/main.py
index d24d79a2849670241d90e37615b86d1299eb280e..04b721ee8f44ae998a2b84d50191523b49925f7d 100644
--- a/main.py
+++ b/main.py
@@ -1,6 +1,5 @@
 import sys
 from PySide2.QtWidgets import QApplication, QMainWindow
-from PySide2.QtCore import QFile, QByteArray
 from PySide2.QtNetwork import QTcpSocket
 from ui_mainwindow import Ui_MainWindow
 
diff --git a/main2.py b/main2.py
new file mode 100644
index 0000000000000000000000000000000000000000..143ade98f63396c794c5551aab13fa3cd589e1ca
--- /dev/null
+++ b/main2.py
@@ -0,0 +1,56 @@
+import sys
+from PySide2.QtWidgets import *
+from PySide2.QtNetwork import QTcpSocket
+
+class MainWindow(QWidget):
+    def __init__(self):
+        super(MainWindow, self).__init__()
+        
+        # Add components
+        self.layout = QVBoxLayout(self)
+        self.chat = QTextEdit(self)
+        self.chat.setReadOnly(True)
+        self.lineEdit = QLineEdit(self)
+        self.sendButton = QPushButton(self)
+        self.sendButton.setText("Send")
+
+        # Connect to sendText
+        self.lineEdit.returnPressed.connect(self.sendText)
+        self.sendButton.clicked.connect(self.sendText)
+
+        # Conect TCP
+        self.socket = QTcpSocket(self)
+        self.socket.connectToHost("localhost", 33000)
+        self.socket.readyRead.connect(self.readText)
+        
+        # Set layout
+        self.layout.addWidget(self.chat)
+        self.layout.addWidget(self.lineEdit)
+        self.layout.addWidget(self.sendButton)
+        
+        # Set window settings
+        self.setWindowTitle("kszképzés chat")
+        self.setLayout(self.layout)
+        self.resize(350, 350)
+
+    # Read text over TCP
+    def readText(self):
+        data = self.socket.readAll()
+        self.chat.append(str(data, 'utf-8'))
+
+    # Write text text over TCP
+    def sendText(self):
+        self.socket.write(self.lineEdit.text().encode('utf-8'))
+        self.lineEdit.clear()
+
+    # Send quit when the window is closed
+    def closeEvent(self, event):
+        self.socket.write("{quit}".encode('utf-8'))
+
+if __name__ == "__main__":
+    app = QApplication(sys.argv)
+
+    window = MainWindow()
+    window.show()
+
+    sys.exit(app.exec_())
\ No newline at end of file
diff --git a/src/build/settings/base.json b/src/build/settings/base.json
new file mode 100644
index 0000000000000000000000000000000000000000..3f9110ce8a078b648d98a809278ab2bcba1fbd8a
--- /dev/null
+++ b/src/build/settings/base.json
@@ -0,0 +1,6 @@
+{
+    "app_name": "chat",
+    "author": "Bodnár Zsombor",
+    "main_module": "src/main/python/main.py",
+    "version": "1"
+}
\ No newline at end of file
diff --git a/src/build/settings/linux.json b/src/build/settings/linux.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a64c9503f7a45f2670c918d8b2ec76ffadba8ce
--- /dev/null
+++ b/src/build/settings/linux.json
@@ -0,0 +1,6 @@
+{
+    "categories": "Utility;",
+    "description": "",
+    "author_email": "",
+    "url": ""
+}
\ No newline at end of file
diff --git a/src/build/settings/mac.json b/src/build/settings/mac.json
new file mode 100644
index 0000000000000000000000000000000000000000..f7bd6105de5f2fd702b802d003553d125c3e8afe
--- /dev/null
+++ b/src/build/settings/mac.json
@@ -0,0 +1,3 @@
+{
+    "mac_bundle_identifier": ""
+}
\ No newline at end of file
diff --git a/src/main/icons/Icon.ico b/src/main/icons/Icon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..3312d8606e5ccf262e3e8f3397189f9105049a19
Binary files /dev/null and b/src/main/icons/Icon.ico differ
diff --git a/src/main/icons/README.md b/src/main/icons/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..c6c419494051fcf1b92ccc3ff90097051bfa873e
--- /dev/null
+++ b/src/main/icons/README.md
@@ -0,0 +1,11 @@
+![Sample app icon](linux/128.png)
+
+This directory contains the icons that are displayed for your app. Feel free to
+change them.
+
+The difference between the icons on Mac and the other platforms is that on Mac,
+they contain a ~5% transparent margin. This is because otherwise they look too
+big (eg. in the Dock or in the app switcher).
+
+You can create Icon.ico from the .png files with
+[an online tool](http://icoconvert.com/Multi_Image_to_one_icon/).
\ No newline at end of file
diff --git a/src/main/icons/base/16.png b/src/main/icons/base/16.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7d02dc268f79c183376b30dddf5ea0cf5827dfe
Binary files /dev/null and b/src/main/icons/base/16.png differ
diff --git a/src/main/icons/base/24.png b/src/main/icons/base/24.png
new file mode 100644
index 0000000000000000000000000000000000000000..faa6710cebe0b9b5b182a8136b0234f14b1794e4
Binary files /dev/null and b/src/main/icons/base/24.png differ
diff --git a/src/main/icons/base/32.png b/src/main/icons/base/32.png
new file mode 100644
index 0000000000000000000000000000000000000000..36b25e8602defb2a39c5163a8826612e8623c71a
Binary files /dev/null and b/src/main/icons/base/32.png differ
diff --git a/src/main/icons/base/48.png b/src/main/icons/base/48.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a5dcbddeaa278eaf757162f5b220af656db284e
Binary files /dev/null and b/src/main/icons/base/48.png differ
diff --git a/src/main/icons/base/64.png b/src/main/icons/base/64.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b0a42323f9d02912c17717cc21d9d6bb6f5c613
Binary files /dev/null and b/src/main/icons/base/64.png differ
diff --git a/src/main/icons/linux/1024.png b/src/main/icons/linux/1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..2248377200ccb2f2bfb3e721089213cc7b47451e
Binary files /dev/null and b/src/main/icons/linux/1024.png differ
diff --git a/src/main/icons/linux/128.png b/src/main/icons/linux/128.png
new file mode 100644
index 0000000000000000000000000000000000000000..05b2b3579b990fd9f21387fcc12e07ab6aa20c38
Binary files /dev/null and b/src/main/icons/linux/128.png differ
diff --git a/src/main/icons/linux/256.png b/src/main/icons/linux/256.png
new file mode 100644
index 0000000000000000000000000000000000000000..578fdc787602fd2e6e5608e8dcba51f1eb638e68
Binary files /dev/null and b/src/main/icons/linux/256.png differ
diff --git a/src/main/icons/linux/512.png b/src/main/icons/linux/512.png
new file mode 100644
index 0000000000000000000000000000000000000000..0fbac4f9c0612b5a799a1544a857315ab8ef20c5
Binary files /dev/null and b/src/main/icons/linux/512.png differ
diff --git a/src/main/icons/mac/1024.png b/src/main/icons/mac/1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1c8691dd52d9a3cfa4ed7d8bcfe92be80f4e835
Binary files /dev/null and b/src/main/icons/mac/1024.png differ
diff --git a/src/main/icons/mac/128.png b/src/main/icons/mac/128.png
new file mode 100644
index 0000000000000000000000000000000000000000..de9bee605f235a04db3a1848323f0780ddd0c27a
Binary files /dev/null and b/src/main/icons/mac/128.png differ
diff --git a/src/main/icons/mac/128@2x.png b/src/main/icons/mac/128@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3a68b97cb24e49d9511b928722208e3f60c9c83
Binary files /dev/null and b/src/main/icons/mac/128@2x.png differ
diff --git a/src/main/icons/mac/16@2x.png b/src/main/icons/mac/16@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..36b25e8602defb2a39c5163a8826612e8623c71a
Binary files /dev/null and b/src/main/icons/mac/16@2x.png differ
diff --git a/src/main/icons/mac/256.png b/src/main/icons/mac/256.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3a68b97cb24e49d9511b928722208e3f60c9c83
Binary files /dev/null and b/src/main/icons/mac/256.png differ
diff --git a/src/main/icons/mac/256@2x.png b/src/main/icons/mac/256@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2fc07e6f54ea4407f1b68d10bd230d9002aca3f
Binary files /dev/null and b/src/main/icons/mac/256@2x.png differ
diff --git a/src/main/icons/mac/32@2x.png b/src/main/icons/mac/32@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b0a42323f9d02912c17717cc21d9d6bb6f5c613
Binary files /dev/null and b/src/main/icons/mac/32@2x.png differ
diff --git a/src/main/icons/mac/512.png b/src/main/icons/mac/512.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2fc07e6f54ea4407f1b68d10bd230d9002aca3f
Binary files /dev/null and b/src/main/icons/mac/512.png differ
diff --git a/src/main/icons/mac/512@2x.png b/src/main/icons/mac/512@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1c8691dd52d9a3cfa4ed7d8bcfe92be80f4e835
Binary files /dev/null and b/src/main/icons/mac/512@2x.png differ
diff --git a/src/main/python/main.py b/src/main/python/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..420265cfdb7bb49f83c828de6e9e82b766716fdc
--- /dev/null
+++ b/src/main/python/main.py
@@ -0,0 +1,63 @@
+from fbs_runtime.application_context import ApplicationContext
+from PySide2.QtWidgets import *
+from PySide2.QtNetwork import QTcpSocket
+
+import sys
+
+class MainWindow(QWidget):
+    def __init__(self):
+        super(MainWindow, self).__init__()
+        
+        # Add components
+        self.layout = QVBoxLayout(self)
+        self.chat = QTextEdit(self)
+        self.chat.setReadOnly(True)
+        self.lineEdit = QLineEdit(self)
+        self.sendButton = QPushButton(self)
+        self.sendButton.setText("Send")
+
+        # Connect to sendText
+        self.lineEdit.returnPressed.connect(self.sendText)
+        self.sendButton.clicked.connect(self.sendText)
+
+        # Conect TCP
+        self.socket = QTcpSocket(self)
+        self.socket.connectToHost("localhost", 33000)
+        self.socket.readyRead.connect(self.readText)
+        
+        # Set layout
+        self.layout.addWidget(self.chat)
+        self.layout.addWidget(self.lineEdit)
+        self.layout.addWidget(self.sendButton)
+        
+        # Set window settings
+        self.setWindowTitle("kszképzés chat")
+        self.setLayout(self.layout)
+        self.resize(350, 350)
+
+    # Read text over TCP
+    def readText(self):
+        data = self.socket.readAll()
+        self.chat.append(str(data, 'utf-8'))
+
+    # Write text text over TCP
+    def sendText(self):
+        self.socket.write(self.lineEdit.text().encode('utf-8'))
+        self.lineEdit.clear()
+
+    # Send quit when the window is closed
+    def closeEvent(self, event):
+        self.socket.write("{quit}".encode('utf-8'))
+
+class AppContext(ApplicationContext):           # 1. Subclass ApplicationContext
+    def run(self):                              # 2. Implement run()
+        window = MainWindow()
+        version = self.build_settings['version']
+        window.setWindowTitle("chat v" + version)
+        window.show()
+        return self.app.exec_()                 # 3. End run() with this line
+
+if __name__ == '__main__':
+    appctxt = AppContext()                      # 4. Instantiate the subclass
+    exit_code = appctxt.run()                   # 5. Invoke run()
+    sys.exit(exit_code)
\ No newline at end of file