diff --git a/src/store/modules/Overview/OverviewStore.js b/src/store/modules/Overview/OverviewStore.js
new file mode 100644
index 0000000..8d0613a
--- /dev/null
+++ b/src/store/modules/Overview/OverviewStore.js
@@ -0,0 +1,48 @@
+import api from '../../api';
+
+const OverviewStore = {
+  namespaced: true,
+  state: {
+    serverInfo: null,
+    serverModel: '--',
+    serverManufacturer: '--',
+    serverSerialNumber: '--'
+  },
+  getters: {
+    serverInfo: state => state.serverInfo,
+    serverModel: state => state.serverModel,
+    serverManufacturer: state => state.serverManufacturer,
+    serverSerialNumber: state => state.serverSerialNumber
+  },
+  mutations: {
+    setServerInfo: (state, serverInfo) => (state.serverInfo = serverInfo),
+    setServerModel: (state, serverModel) => (state.serverModel = serverModel),
+    setServerManufacturer: (state, serverManufacturer) =>
+      (state.serverManufacturer = serverManufacturer),
+    setServerSerialNumber: (state, serverSerialNumber) =>
+      (state.serverSerialNumber = serverSerialNumber)
+  },
+  actions: {
+    getServerInfo({ commit }) {
+      api
+        .get('/xyz/openbmc_project/inventory/system')
+        .then(response => {
+          const serverInfo = response.data.data;
+          if (serverInfo.Model) {
+            commit('setServerModel', serverInfo.Model);
+          }
+          if (serverInfo.SerialNumber) {
+            commit('setServerSerialNumber', serverInfo.SerialNumber);
+          }
+          if (serverInfo.Manufacturer) {
+            commit('setServerManufacturer', serverInfo.Manufacturer);
+          }
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    }
+  }
+};
+
+export default OverviewStore;
