diff --git a/src/store/index.js b/src/store/index.js
index 889e52b..cb63e54 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -4,6 +4,12 @@
 import GlobalStore from './modules/GlobalStore';
 import AuthenticationStore from './modules/Authentication/AuthenticanStore';
 import LocalUserManagementStore from './modules/AccessControl/LocalUserMangementStore';
+import OverviewStore from './modules/Overview/OverviewStore';
+import FirmwareStore from './modules/Configuration/FirmwareStore';
+import PowerConsumptionStore from './modules/Control/PowerConsumptionStore';
+import PowerCapStore from './modules/Control/PowerCapStore';
+import NetworkSettingStore from './modules/Configuration/NetworkSettingsStore';
+import EventLogStore from './modules/Health/EventLogStore';
 
 import WebSocketPlugin from './plugins/WebSocketPlugin';
 
@@ -16,7 +22,13 @@
   modules: {
     global: GlobalStore,
     authentication: AuthenticationStore,
-    localUsers: LocalUserManagementStore
+    localUsers: LocalUserManagementStore,
+    overview: OverviewStore,
+    firmware: FirmwareStore,
+    powerConsumption: PowerConsumptionStore,
+    powerCap: PowerCapStore,
+    networkSettings: NetworkSettingStore,
+    eventLog: EventLogStore
   },
   plugins: [WebSocketPlugin]
 });
diff --git a/src/store/modules/Configuration/FirmwareStore.js b/src/store/modules/Configuration/FirmwareStore.js
new file mode 100644
index 0000000..5185a13
--- /dev/null
+++ b/src/store/modules/Configuration/FirmwareStore.js
@@ -0,0 +1,60 @@
+import api from '../../api';
+
+const FirmwareStore = {
+  namespaced: true,
+  state: {
+    firmwareInfo: null,
+    bmcActiveVersion: '--',
+    hostActiveVersion: '--'
+  },
+  getters: {
+    firmwareInfo: state => state.firmwareInfo,
+    bmcActiveVersion: state => state.bmcActiveVersion,
+    hostActiveVersion: state => state.hostActiveVersion
+  },
+  mutations: {
+    setFirmwareInfo: (state, firmwareInfo) =>
+      (state.firmwareInfo = firmwareInfo),
+    setBmcActiveVersion: (state, bmcActiveVersion) =>
+      (state.bmcActiveVersion = bmcActiveVersion),
+    setHostActiveVersion: (state, hostActiveVersion) =>
+      (state.hostActiveVersion = hostActiveVersion)
+  },
+  actions: {
+    getFirmwareInfo({ commit }) {
+      api
+        .get('/xyz/openbmc_project/software/enumerate')
+        .then(response => {
+          const firmwareInfo = response.data.data;
+          const functionalImages =
+            firmwareInfo['/xyz/openbmc_project/software/functional'].endpoints;
+          for (let key in firmwareInfo) {
+            /**
+             * If "Functional" activation status is
+             * functional, else it is "activation"
+             * github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Software/Activation.interface.yaml
+             */
+            if (firmwareInfo[key].hasOwnProperty('Version')) {
+              let activationStatus = '';
+              const imageType = firmwareInfo[key].Purpose.split('.').pop();
+              if (functionalImages.includes(key)) {
+                activationStatus = 'Functional';
+              }
+              // Get BMC and Host active Versions
+              if (activationStatus == 'Functional' && imageType == 'BMC') {
+                commit('setBmcActiveVersion', firmwareInfo[key].Version);
+              }
+              if (activationStatus == 'Functional' && imageType == 'Host') {
+                commit('setHostActiveVersion', firmwareInfo[key].Version);
+              }
+            }
+          }
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    }
+  }
+};
+
+export default FirmwareStore;
diff --git a/src/store/modules/Configuration/NetworkSettingsStore.js b/src/store/modules/Configuration/NetworkSettingsStore.js
new file mode 100644
index 0000000..ee58a77
--- /dev/null
+++ b/src/store/modules/Configuration/NetworkSettingsStore.js
@@ -0,0 +1,48 @@
+import api from '../../api';
+
+const NetworkSettingsStore = {
+  namespaced: true,
+  state: {
+    networkData: null,
+    ipAddress: '--',
+    macAddress: '--'
+  },
+  getters: {
+    networkData: state => state.networkData,
+    ipAddress: state => state.ipAddress,
+    macAddress: state => state.macAddress
+  },
+  mutations: {
+    setNetworkData: (state, networkData) => (state.networkData = networkData),
+    setIpAddress: (state, ipAddress) => (state.ipAddress = ipAddress),
+    setMacAddress: (state, macAddress) => (state.macAddress = macAddress)
+  },
+  actions: {
+    getNetworkData({ commit }) {
+      api
+        .get('/xyz/openbmc_project/network/enumerate')
+        .then(response => {
+          const networkData = response.data.data;
+          const ipAddresses = [];
+          const interfaceId = /eth[0-9]/;
+          for (let key in networkData) {
+            if (key.includes('ipv4')) {
+              ipAddresses.push(networkData[key].Address);
+            }
+            if (
+              key.match(interfaceId) &&
+              networkData[key].MACAddress !== undefined
+            ) {
+              commit('setMacAddress', networkData[key].MACAddress);
+            }
+          }
+          commit('setIpAddress', ipAddresses);
+        })
+        .catch(error => {
+          console.log('Network Data:', error);
+        });
+    }
+  }
+};
+
+export default NetworkSettingsStore;
diff --git a/src/store/modules/Control/PowerCapStore.js b/src/store/modules/Control/PowerCapStore.js
new file mode 100644
index 0000000..bef9f47
--- /dev/null
+++ b/src/store/modules/Control/PowerCapStore.js
@@ -0,0 +1,36 @@
+import api from '../../api';
+
+const PowerCapStore = {
+  namespaced: true,
+  state: {
+    powerCapData: null,
+    powerCapValue: 'Not enabled'
+  },
+  getters: {
+    powerCapData: state => state.powerCapData,
+    powerCapValue: state => state.powerCapValue
+  },
+  mutations: {
+    setPowerCapData: (state, powerCapData) =>
+      (state.powerCapData = powerCapData),
+    setPowerCapValue: (state, powerCapValue) =>
+      (state.powerCapValue = powerCapValue)
+  },
+  actions: {
+    getPowerCapData({ commit }) {
+      api
+        .get('/xyz/openbmc_project/control/host0/power_cap')
+        .then(response => {
+          const powerCapData = response.data.data;
+          if (powerCapData.PowerCapEnable) {
+            commit('setPowerCapValue', powerCapData.PowerCap + ' W');
+          }
+        })
+        .catch(error => {
+          console.log('Power cap error', error);
+        });
+    }
+  }
+};
+
+export default PowerCapStore;
diff --git a/src/store/modules/Control/PowerConsumptionStore.js b/src/store/modules/Control/PowerConsumptionStore.js
new file mode 100644
index 0000000..03ccffc
--- /dev/null
+++ b/src/store/modules/Control/PowerConsumptionStore.js
@@ -0,0 +1,35 @@
+import api from '../../api';
+
+const PowerConsumptionStore = {
+  namespaced: true,
+  state: {
+    powerData: null,
+    powerConsumption: 'Not available'
+  },
+  getters: {
+    powerData: state => state.powerData,
+    powerConsumption: state => state.powerConsumption
+  },
+  mutations: {
+    setPowerData: (state, powerData) => (state.powerData = powerData),
+    setPowerConsumption: (state, powerConsumption) =>
+      (state.powerConsumption = powerConsumption)
+  },
+  actions: {
+    getPowerData({ commit }) {
+      api
+        .get('/xyz/openbmc_project/sensors/power/total_power')
+        .then(response => {
+          const powerData = response.data.data;
+          let powerConsumption =
+            powerData.Value * Math.pow(10, powerData.Scale) + ' W';
+          commit('setPowerConsumption', powerConsumption);
+        })
+        .catch(error => {
+          console.log('Power Consumption', error);
+        });
+    }
+  }
+};
+
+export default PowerConsumptionStore;
diff --git a/src/store/modules/GlobalStore.js b/src/store/modules/GlobalStore.js
index 80d9c1a..18d5043 100644
--- a/src/store/modules/GlobalStore.js
+++ b/src/store/modules/GlobalStore.js
@@ -25,23 +25,19 @@
   namespaced: true,
   state: {
     hostName: '--',
+    bmcTime: null,
     hostStatus: 'unreachable'
   },
   getters: {
-    hostName(state) {
-      return state.hostName;
-    },
-    hostStatus(state) {
-      return state.hostStatus;
-    }
+    hostName: state => state.hostName,
+    hostStatus: state => state.hostStatus,
+    bmcTime: state => state.bmcTime
   },
   mutations: {
-    setHostName(state, hostName) {
-      state.hostName = hostName;
-    },
-    setHostStatus(state, hostState) {
-      state.hostStatus = hostStateMapper(hostState);
-    }
+    setHostName: (state, hostName) => (state.hostName = hostName),
+    setBmcTime: (state, bmcTime) => (state.bmcTime = bmcTime),
+    setHostStatus: (state, hostState) =>
+      (state.hostState = hostStateMapper(hostState))
   },
   actions: {
     getHostName({ commit }) {
@@ -53,6 +49,16 @@
         })
         .catch(error => console.log(error));
     },
+    getBmcTime({ commit }) {
+      api
+        .get('/xyz/openbmc_project/time/bmc')
+        .then(response => {
+          // bmcTime is stored in microseconds, convert to millseconds
+          const bmcTime = response.data.data.Elapsed / 1000;
+          commit('setBmcTime', bmcTime);
+        })
+        .catch(error => console.log(error));
+    },
     getHostStatus({ commit }) {
       api
         .get('/xyz/openbmc_project/state/host0/attr/CurrentHostState')
diff --git a/src/store/modules/Health/EventLogStore.js b/src/store/modules/Health/EventLogStore.js
new file mode 100644
index 0000000..404a963
--- /dev/null
+++ b/src/store/modules/Health/EventLogStore.js
@@ -0,0 +1,72 @@
+import api from '../../api';
+
+const severityToPriorityMap = {
+  Emergency: 'High',
+  Alert: 'High',
+  Critical: 'High',
+  Error: 'High',
+  Warning: 'Medium',
+  Notice: 'Low',
+  Debug: 'Low',
+  Informational: 'Low'
+};
+
+const EventLogStore = {
+  namespaced: true,
+  state: {
+    eventLogData: null
+  },
+  getters: {
+    eventLogData: state => state.eventLogData
+  },
+  mutations: {
+    setEventLogData: (state, eventLogData) =>
+      (state.eventLogData = eventLogData)
+  },
+  actions: {
+    getEventLogData({ commit }) {
+      api
+        .get('/xyz/openbmc_project/logging/enumerate')
+        .then(response => {
+          const eventLog = response.data.data;
+          const entryNumber = /[1-9]/;
+          const eventLogEntries = [];
+          /**
+           * Entry log endpoints:
+           * 'entry' + entry id contain event log entry information
+           * 'callout' contains part number and serial number for part affected
+           */
+          for (let key in eventLog) {
+            // Check for event log entry:
+            if (
+              key.includes('entry') &&
+              key.match(entryNumber) &&
+              !key.includes('callout')
+            ) {
+              const eventKey = eventLog[key];
+              const eventSeverity = eventKey.Severity.split('.').pop();
+              const eventPriority = severityToPriorityMap[eventSeverity];
+              eventLogEntries.push(
+                Object.assign(
+                  {
+                    logId: eventKey.Id,
+                    priority: eventPriority,
+                    timestamp: eventKey.Timestamp,
+                    eventID: eventKey.EventID,
+                    description: eventKey.Description
+                  },
+                  eventKey
+                )
+              );
+              commit('setEventLogData', eventLogEntries);
+            }
+          }
+        })
+        .catch(error => {
+          console.log('Event Log Data:', error);
+        });
+    }
+  }
+};
+
+export default EventLogStore;
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;
