diff --git a/pom.xml b/pom.xml
index 9e9feaa..5c1cef2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,13 @@
         eu.m724.chaqt.Main
     
 
+    
+        
+            m724
+            https://git.m724.eu/api/packages/Minecon724/maven
+        
+    
+
     
         
             io.qtjambi
@@ -26,6 +33,11 @@
             qtjambi-native-linux-x64
             6.7.2
         
+        
+            eu.m724
+            chatapi
+            1.0
+        
     
 
     
diff --git a/src/main/java/eu/m724/chaqt/ChatWindowViewModel.java b/src/main/java/eu/m724/chaqt/ChatWindowViewModel.java
new file mode 100644
index 0000000..a217c5c
--- /dev/null
+++ b/src/main/java/eu/m724/chaqt/ChatWindowViewModel.java
@@ -0,0 +1,14 @@
+package eu.m724.chaqt;
+
+import eu.m724.chatapi.chat.Chat;
+
+public class ChatWindowViewModel {
+    private ChatWindowWidget widget;
+
+    private Chat chat;
+
+    public ChatWindowViewModel(ChatWindowWidget widget, Chat chat) {
+        this.widget = widget;
+        this.chat = chat;
+    }
+}
diff --git a/src/main/java/eu/m724/chaqt/ChatWindowWidget.java b/src/main/java/eu/m724/chaqt/ChatWindowWidget.java
new file mode 100644
index 0000000..9178950
--- /dev/null
+++ b/src/main/java/eu/m724/chaqt/ChatWindowWidget.java
@@ -0,0 +1,62 @@
+package eu.m724.chaqt;
+
+import eu.m724.chatapi.chat.Chat;
+import io.qt.core.Qt;
+import io.qt.widgets.*;
+
+public class ChatWindowWidget extends QWidget {
+    private ChatWindowViewModel viewModel;
+
+    private QVBoxLayout layout;
+    private QTextEdit textEdit;
+
+    public ChatWindowWidget(Chat chat) {
+        this.viewModel = new ChatWindowViewModel(this, chat);
+
+        //
+
+        this.layout = new QVBoxLayout();
+        layout.setAlignment(Qt.AlignmentFlag.AlignBottom); // or top?
+
+        QWidget widget = new QWidget();
+        widget.setLayout(layout);
+
+        QScrollArea scrollArea = new QScrollArea();
+        scrollArea.setWidgetResizable(true);
+        scrollArea.setWidget(widget);
+
+        //
+
+        this.textEdit = new QTextEdit();
+        textEdit.setPlaceholderText("Write a message...");
+        textEdit.textChanged.connect(this, "handleComposerType()");
+
+        QPushButton sendButton = new QPushButton("Send");
+
+        QHBoxLayout composerLayout = new QHBoxLayout();
+        composerLayout.addWidget(textEdit);
+        composerLayout.addWidget(sendButton, 0, Qt.AlignmentFlag.AlignBottom);
+
+        QWidget composerWidget = new QWidget();
+        composerWidget.setLayout(composerLayout);
+
+        handleComposerType(); // TODO make it resizable and fix it
+
+        //
+
+        QVBoxLayout mainLayout = new QVBoxLayout();
+        mainLayout.addWidget(scrollArea, 1);
+        mainLayout.addWidget(composerWidget);
+        setLayout(mainLayout);
+
+        for (int i=0; i<10; i++) {
+            QPushButton pushButton = new QPushButton("hello");
+            layout.addWidget(pushButton);
+        }
+    }
+
+    public void handleComposerType() {
+        int height = (int) textEdit.document().size().height();
+        textEdit.setFixedHeight(height + textEdit.contentsMargins().top() + textEdit.contentsMargins().bottom());
+    }
+}
diff --git a/src/main/java/eu/m724/chaqt/Main.java b/src/main/java/eu/m724/chaqt/Main.java
index 2be5d85..6d9f28e 100644
--- a/src/main/java/eu/m724/chaqt/Main.java
+++ b/src/main/java/eu/m724/chaqt/Main.java
@@ -1,5 +1,6 @@
 package eu.m724.chaqt;
 
+import eu.m724.chatapi.chat.Chat;
 import io.qt.widgets.QApplication;
 import io.qt.widgets.QMessageBox;
 
@@ -8,8 +9,10 @@ public class Main  {
     public static void main(String[] args) {
         QApplication.initialize(args);
 
-        HelloWorld hello = new HelloWorld();
-        hello.show();
+        Chat chat = new Chat();
+
+        ChatWindowWidget widget = new ChatWindowWidget(chat);
+        widget.show();
 
         QApplication.exec();
     }