diff --git a/Modules/StateViewer/stateviewermodule.cpp b/Modules/StateViewer/stateviewermodule.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e0b605629a1c693b29c16cb27cb093a70459d365
--- /dev/null
+++ b/Modules/StateViewer/stateviewermodule.cpp
@@ -0,0 +1,96 @@
+#include "stateviewermodule.h"
+#include "ui_stateviewermodule.h"
+
+#include <QInputDialog>
+#include <QLineEdit>
+#include "Core/modulemessagesbroker.h"
+
+StateViewerModule::StateViewerModule(QWidget *parent) : DefaultModule(parent), ui(new Ui::StateViewerModule)
+{
+    ui->setupUi(this);
+    defaultContextMenuSetup();
+
+    labes.append(ui->label_1);
+    labes.append(ui->label_2);
+    labes.append(ui->label_3);
+    labes.append(ui->label_4);
+}
+
+StateViewerModule::~StateViewerModule()
+{
+    delete ui;
+}
+
+QWidget *StateViewerModule::toWidget()
+{
+    return this;
+}
+
+XmlObject StateViewerModule::toXmlObject()
+{
+    XmlObject obj(getName(ModuleId::STATEVIEWER));
+
+    obj.addAttribute("topic", inputTopic);
+
+    return obj;
+}
+
+void StateViewerModule::fromXmlObject(const XmlObject &xmlObject)
+{
+    if(xmlObject.getObjectName() == getName(ModuleId::STATEVIEWER)){
+
+        inputTopic = xmlObject.getAttribute("topic");
+        if(inputTopic != ""){
+            setTopic(inputTopic);
+        }
+    }
+}
+
+void StateViewerModule::addCustomActionsToMenu()
+{
+    QAction* config = new QAction("Configure");
+    connect(config, &QAction::triggered,this, &StateViewerModule::onConfigureClicked);
+
+    addActionToMenu(config);
+}
+
+void StateViewerModule::onConfigureClicked()
+{
+    bool ok;
+    QString text = QInputDialog::getText(this, tr("Topic"),
+                   tr("Insert input topic with the state information"), QLineEdit::Normal, inputTopic, &ok);
+    text = text.trimmed();
+    if (ok && !text.isEmpty())
+        setTopic(text);
+}
+
+void StateViewerModule::setTopic(const QString &topic)
+{
+    getCore()->getModuleMessagesBroker()->unsubscribe(inputTopic, this);
+
+    inputTopic = topic;
+    getCore()->getModuleMessagesBroker()->subscribe(inputTopic, this, [this](const ModuleMessage &msg){
+        onMsgReceived(msg);
+    });
+}
+
+void StateViewerModule::onMsgReceived(const ModuleMessage &msg)
+{
+    int value = -1;
+    if(msg.getIntPayload(value)){
+        setState(value);
+    }
+}
+
+void StateViewerModule::setState(int state)
+{
+    if(state>= 0 && state < labes.count()){
+        QString style = labes[state]->styleSheet();
+        style += "background-color:green;";
+        labes[state]->setStyleSheet(style);
+    }
+
+}
+
+
+
diff --git a/Modules/StateViewer/stateviewermodule.h b/Modules/StateViewer/stateviewermodule.h
new file mode 100644
index 0000000000000000000000000000000000000000..2f4183fa4137f3956cbacd0cc1ad126ded61574c
--- /dev/null
+++ b/Modules/StateViewer/stateviewermodule.h
@@ -0,0 +1,42 @@
+#ifndef STATEVIEWERMODULE_H
+#define STATEVIEWERMODULE_H
+
+#include <QWidget>
+#include <QLabel>
+
+#include "Modules/DefaultModule/defaultmodule.h"
+#include "Core/modulemessage.h"
+
+
+namespace Ui {
+class StateViewerModule;
+}
+
+class StateViewerModule : public DefaultModule
+{
+    Q_OBJECT
+
+public:
+    explicit StateViewerModule(QWidget *parent = nullptr);
+    ~StateViewerModule();
+
+    QWidget *toWidget() override;
+
+    XmlObject toXmlObject() override;
+    void fromXmlObject(const XmlObject &xmlObject) override;
+
+protected:
+    void addCustomActionsToMenu() override;
+    void onConfigureClicked();
+    void setTopic(const QString &topic);
+    void onMsgReceived(const ModuleMessage &msg);
+    void setState(int state);
+
+private:
+    Ui::StateViewerModule *ui;
+    QString inputTopic = "";
+
+    QList<QLabel*> labes;
+};
+
+#endif // STATEVIEWERMODULE_H
diff --git a/Modules/StateViewer/stateviewermodule.ui b/Modules/StateViewer/stateviewermodule.ui
new file mode 100644
index 0000000000000000000000000000000000000000..f6adc5360d3b3774c67aa29305c1d1a06ed7e144
--- /dev/null
+++ b/Modules/StateViewer/stateviewermodule.ui
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>StateViewerModule</class>
+ <widget class="QWidget" name="StateViewerModule">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QScrollArea" name="scrollArea">
+     <property name="widgetResizable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>378</width>
+        <height>278</height>
+       </rect>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">border: 1px solid grey;
+color: white;</string>
+      </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="0" column="1">
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>Phase 2 
+Description</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>Phase 3 
+Description</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0">
+        <widget class="QLabel" name="label_1">
+         <property name="styleSheet">
+          <string notr="true">border: 1px solid grey;
+color: white;</string>
+         </property>
+         <property name="text">
+          <string>Phase 1 
+Description</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="3">
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>Phase 4 
+Description</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Modules/moduleinfo.h b/Modules/moduleinfo.h
index 528d53e8550654b44339bea73b02d7b11db81818..be9d69ec45b5b478945911dbb55328dea9681bd5 100644
--- a/Modules/moduleinfo.h
+++ b/Modules/moduleinfo.h
@@ -21,6 +21,7 @@ enum ModuleId{
     TREEVIEWER,
     SCROLLAREA,
     FILESTREAM,
+    STATEVIEWER,
     MAVLINK_RCK_TESTING
 };
 
diff --git a/Modules/moduleslist.cpp b/Modules/moduleslist.cpp
index e7d34341b8a7c8c08651cd0517a3ea4e7417c8bc..384691da5444be1d7ee348e90d2a7c397d83765e 100644
--- a/Modules/moduleslist.cpp
+++ b/Modules/moduleslist.cpp
@@ -19,6 +19,7 @@
 #include "Modules/ScrollArea/scrollareamodule.h"
 #include "Modules/FileStream/filestreammodule.h"
 #include "Modules/Mavlink/mavlinkrocketmsgtestingmodule.h"
+#include "Modules/StateViewer/stateviewermodule.h"
 
 void ModulesList::createModuleList()
 {
@@ -145,6 +146,13 @@ void ModulesList::createModuleList()
     fileStream.addModuleSourceFiles("Modules/FileStream/");
     addModuleInfo(fileStream);
     #endif
+
+    #ifdef STATEVIEWERMODULE_H
+    ModuleInfo stateViewer(ModuleId::STATEVIEWER, "StateViewer", ModuleCategory::DATAVISUAL);
+    stateViewer.setFactory([](){return new StateViewerModule();});
+    stateViewer.addModuleSourceFiles("Modules/StateViewer/");
+    addModuleInfo(stateViewer);
+    #endif
 }
 
 
diff --git a/SkywardHub.pro b/SkywardHub.pro
index a375acafd0729eb0808dc2847b952ec6340cef31..596b59627bc6bb51264d827549f4f0335948d2f9 100644
--- a/SkywardHub.pro
+++ b/SkywardHub.pro
@@ -57,6 +57,7 @@ SOURCES += \
     Modules/SkywardHub/prefabviewelement.cpp \
     Modules/SkywardHub/skywardhubmodule.cpp \
     Modules/Splitter/splittermodule.cpp \
+    Modules/StateViewer/stateviewermodule.cpp \
     Modules/Table/tablemodule.cpp \
     Modules/Test/testmodule.cpp \
     Modules/TreeViewer/treevieweritem.cpp \
@@ -122,6 +123,7 @@ HEADERS += \
     Modules/SkywardHub/prefabviewelement.h \
     Modules/SkywardHub/skywardhubmodule.h \
     Modules/Splitter/splittermodule.h \
+    Modules/StateViewer/stateviewermodule.h \
     Modules/Table/tablemodule.h \
     Modules/Test/testmodule.h \
     Modules/TreeViewer/treevieweritem.h \
@@ -158,6 +160,7 @@ FORMS += \
     Modules/SkywardHub/prefabviewelement.ui \
     Modules/SkywardHub/skywardhubmodule.ui \
     Modules/Splitter/splittermodule.ui \
+    Modules/StateViewer/stateviewermodule.ui \
     Modules/Table/tablemodule.ui \
     Modules/Test/testmodule.ui \
     Modules/TreeViewer/treeviewermodule.ui \