Merge pull request #47 from Pil0tXia/pil0txia/feat_46

[ISSUE #46] Refactor and split `core` module
diff --git a/eventmesh-dashboard-common/pom.xml b/eventmesh-dashboard-common/pom.xml
index 52255b0..108b059 100644
--- a/eventmesh-dashboard-common/pom.xml
+++ b/eventmesh-dashboard-common/pom.xml
@@ -16,14 +16,30 @@
         <java.version>1.8</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <spring-boot.version>2.7.6</spring-boot.version>
     </properties>
 
     <dependencies>
+        <!-- Spring Boot Starter -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!-- Utility -->
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.13.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.40</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/constant/ConfigConst.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/constant/ConfigConst.java
similarity index 95%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/constant/ConfigConst.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/constant/ConfigConst.java
index c58ab18..f13a40e 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/constant/ConfigConst.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/constant/ConfigConst.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.constant;
+package org.apache.eventmesh.dashboard.common.constant;
 
 public class ConfigConst {
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/constant/NacosConst.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/constant/NacosConst.java
similarity index 96%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/constant/NacosConst.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/constant/NacosConst.java
index a03181d..b23a8d3 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/constant/NacosConst.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/constant/NacosConst.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.constant;
+package org.apache.eventmesh.dashboard.common.constant;
 
 public class NacosConst {
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/Result.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/dto/Result.java
similarity index 88%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/Result.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/dto/Result.java
index b468318..1ea4c52 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/Result.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/dto/Result.java
@@ -15,12 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.dto;
+package org.apache.eventmesh.dashboard.common.dto;
 
-import static org.apache.eventmesh.dashboard.core.enums.Status.SUCCESS;
-
-import org.apache.eventmesh.dashboard.core.enums.Status;
-import org.apache.eventmesh.dashboard.core.exception.BaseException;
+import org.apache.eventmesh.dashboard.common.enums.Status;
+import org.apache.eventmesh.dashboard.common.exception.BaseException;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -59,16 +57,16 @@
      * The request is valid and the result is wrapped in {@link Result}.
      */
     public static <T> Result<T> success() {
-        return new Result<>(new StatusMessage(SUCCESS));
+        return new Result<>(new StatusMessage(Status.SUCCESS));
     }
 
     public static <T> Result<T> success(Result<T> result) {
-        result.setMessage(new StatusMessage(SUCCESS));
+        result.setMessage(new StatusMessage(Status.SUCCESS));
         return result;
     }
 
     public static <T> Result<T> success(T data) {
-        return new Result<>(data, null, new StatusMessage(SUCCESS));
+        return new Result<>(data, null, new StatusMessage(Status.SUCCESS));
     }
 
     /**
@@ -76,11 +74,11 @@
      * Logic issues should use 422 Unprocessable Entity instead of 200 OK.
      */
     public static <T> ResponseEntity<Result<T>> ok() {
-        return ResponseEntity.ok(new Result<>(new StatusMessage(SUCCESS)));
+        return ResponseEntity.ok(new Result<>(new StatusMessage(Status.SUCCESS)));
     }
 
     public static <T> ResponseEntity<Result<T>> ok(Result<T> result) {
-        result.setMessage(new StatusMessage(SUCCESS));
+        result.setMessage(new StatusMessage(Status.SUCCESS));
         return ResponseEntity.ok(result);
     }
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/enums/Status.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/enums/Status.java
similarity index 92%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/enums/Status.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/enums/Status.java
index da3cb0b..4a6036f 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/enums/Status.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/enums/Status.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.enums;
+package org.apache.eventmesh.dashboard.common.enums;
 
-import static org.apache.eventmesh.dashboard.core.constant.ConfigConst.COLON;
+import static org.apache.eventmesh.dashboard.common.constant.ConfigConst.COLON;
 
 import org.springframework.http.HttpStatus;
 
@@ -74,7 +74,7 @@
 
         SUCCESS("Successfully received and processed"),
 
-        SDK_CONFIG_ERR("The Meta SDK config in EventMeshAdmin application.yml error"),
+        SDK_CONFIG_ERR("Meta SDK config error"),
 
         META_COM_ERR("Network communication to Meta error"),
         ;
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/BaseException.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/BaseException.java
similarity index 84%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/BaseException.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/BaseException.java
index 3258f42..c336401 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/BaseException.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/BaseException.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.exception;
+package org.apache.eventmesh.dashboard.common.exception;
 
-import static org.apache.eventmesh.dashboard.core.constant.ConfigConst.COLON;
+import static org.apache.eventmesh.dashboard.common.constant.ConfigConst.COLON;
 
-import org.apache.eventmesh.dashboard.core.enums.Status;
-import org.apache.eventmesh.dashboard.core.util.ExceptionUtil;
+import org.apache.eventmesh.dashboard.common.enums.Status;
+import org.apache.eventmesh.dashboard.common.util.ExceptionUtil;
 
 import lombok.Getter;
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/EventMeshAdminException.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/EventMeshAdminException.java
similarity index 91%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/EventMeshAdminException.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/EventMeshAdminException.java
index 93607db..f0ce811 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/EventMeshAdminException.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/EventMeshAdminException.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.exception;
+package org.apache.eventmesh.dashboard.common.exception;
 
-import org.apache.eventmesh.dashboard.core.enums.Status;
+import org.apache.eventmesh.dashboard.common.enums.Status;
 
 /**
  * EventMeshAdmin Application side exception
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/EventMeshException.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/EventMeshException.java
similarity index 94%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/EventMeshException.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/EventMeshException.java
index aadc45a..444e530 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/EventMeshException.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/EventMeshException.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.exception;
+package org.apache.eventmesh.dashboard.common.exception;
 
 /**
  * EventMesh Runtime side exception
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/MetaException.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/MetaException.java
similarity index 91%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/MetaException.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/MetaException.java
index 734251e..b479fc6 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/MetaException.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/exception/MetaException.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.exception;
+package org.apache.eventmesh.dashboard.common.exception;
 
-import org.apache.eventmesh.dashboard.core.enums.Status;
+import org.apache.eventmesh.dashboard.common.enums.Status;
 
 /**
  * Meta side exception with EventMeshAdmin Application
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/ConnectionInfo.java
similarity index 93%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/ConnectionInfo.java
index 9325b83..3934e8f 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/ConnectionInfo.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.model;
+package org.apache.eventmesh.dashboard.common.model;
 
 public class ConnectionInfo {
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/SubscriptionInfo.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/SubscriptionInfo.java
similarity index 94%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/SubscriptionInfo.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/SubscriptionInfo.java
index 524d9f5..6052d6c 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/SubscriptionInfo.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/SubscriptionInfo.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.model;
+package org.apache.eventmesh.dashboard.common.model;
 
 import lombok.Builder;
 import lombok.Data;
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/TopicProperties.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/TopicProperties.java
similarity index 95%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/TopicProperties.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/TopicProperties.java
index 7461bc4..49decb7 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/TopicProperties.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/TopicProperties.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.model;
+package org.apache.eventmesh.dashboard.common.model;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/util/ExceptionUtil.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/util/ExceptionUtil.java
similarity index 95%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/util/ExceptionUtil.java
rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/util/ExceptionUtil.java
index f1a8635..a9bd0e0 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/util/ExceptionUtil.java
+++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/util/ExceptionUtil.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.util;
+package org.apache.eventmesh.dashboard.common.util;
 
 public class ExceptionUtil {
 
diff --git a/eventmesh-dashboard-console/pom.xml b/eventmesh-dashboard-console/pom.xml
index ac0bc7c..b071854 100644
--- a/eventmesh-dashboard-console/pom.xml
+++ b/eventmesh-dashboard-console/pom.xml
@@ -19,36 +19,7 @@
     </properties>
 
     <dependencies>
-        <!-- springframework dependencies -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <!-- ASP dependency -->
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-aspects</artifactId>
-            <version>5.1.2.RELEASE</version>
-        </dependency>
-
-        <!-- swagger -->
-        <dependency>
-            <groupId>org.springdoc</groupId>
-            <artifactId>springdoc-openapi-ui</artifactId>
-            <version>1.7.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springdoc</groupId>
-            <artifactId>springdoc-openapi-javadoc</artifactId>
-            <version>1.7.0</version>
-        </dependency>
-
-        <!-- eventmesh.dashboard dependency -->
+        <!-- EventMesh Dashboard modules -->
         <dependency>
             <groupId>org.apache.eventmesh.dashboard.common</groupId>
             <artifactId>eventmesh-dashboard-common</artifactId>
@@ -60,6 +31,24 @@
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
 
+        <!-- AOP -->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aspects</artifactId>
+        </dependency>
+
+        <!-- Swagger -->
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>1.7.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-javadoc</artifactId>
+            <version>1.7.0</version>
+        </dependency>
+
         <!-- Database -->
         <dependency>
             <groupId>com.alibaba</groupId>
@@ -77,7 +66,7 @@
         </dependency>
 
         <!-- health check client -->
-        <!-- Eventmesh SDK -->
+        <!-- EventMesh SDK -->
         <dependency>
             <groupId>org.apache.eventmesh</groupId>
             <artifactId>eventmesh-sdk-java</artifactId>
@@ -100,6 +89,12 @@
         </dependency>
         <!-- health check client end -->
 
+        <!-- Unit Test -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
 
         <!-- TODO: remove junit4 dependency -->
         <dependency>
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
index 117dd06..53a951a 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
@@ -31,7 +31,7 @@
     public static void main(String[] args) {
         try {
             SpringApplication.run(EventMeshDashboardApplication.class, args);
-            log.info("{} Successfully booted.", EventMeshDashboardApplication.class.getSimpleName());
+            log.info("{} Boot Successful!", EventMeshDashboardApplication.class.getSimpleName());
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/ConnectionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
similarity index 86%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/ConnectionController.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
index 34037d1..37e9049 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/ConnectionController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.controller;
+package org.apache.eventmesh.dashboard.console.controller;
 
-import org.apache.eventmesh.dashboard.core.service.ConnectionService;
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -30,8 +29,10 @@
 @RestController
 public class ConnectionController {
 
-    @Autowired
-    ConnectionService connectionService;
+    /**
+     * TODO expose implement by FunctionManager
+     */
+    ConnectionCore connectionCore;
 
     /**
      * Query Connection List
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/MetricsController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java
similarity index 94%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/MetricsController.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java
index fbf7dcb..689f833 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/MetricsController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/MetricsController.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.controller;
+package org.apache.eventmesh.dashboard.console.controller;
 
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -24,8 +24,10 @@
 
 @RestController
 public class MetricsController {
+
     @GetMapping("/druid/stat")
     public Object druidStat() {
         return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();
     }
+
 }
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/SubscriptionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
similarity index 81%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/SubscriptionController.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
index 3b48763..1af09ae 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/SubscriptionController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
@@ -15,15 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.controller;
+package org.apache.eventmesh.dashboard.console.controller;
 
-import org.apache.eventmesh.dashboard.core.dto.Result;
-import org.apache.eventmesh.dashboard.core.model.SubscriptionInfo;
-import org.apache.eventmesh.dashboard.core.service.SubscriptionService;
+import org.apache.eventmesh.dashboard.common.dto.Result;
+import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
 
 import java.util.List;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -33,8 +32,10 @@
 @RequestMapping("/api/v1")
 public class SubscriptionController {
 
-    @Autowired
-    SubscriptionService subscriptionService;
+    /**
+     * TODO expose implement by FunctionManager
+     */
+    SubscriptionCore subscriptionCore;
 
     // the subscription dataId naming pattern of EventMesh clients: ip-protocol
     private static final String CLIENT_DATA_ID_PATTERN = "*.*.*.*-*";
@@ -48,7 +49,7 @@
      */
     @GetMapping("/subscription")
     public Result<String> retrieveSubscription(@RequestParam("dataId") String dataId, @RequestParam("group") String group) {
-        return Result.success(subscriptionService.retrieveConfig(dataId, group));
+        return Result.success(subscriptionCore.retrieveConfig(dataId, group));
     }
 
     /**
@@ -66,7 +67,7 @@
         @RequestParam(name = "size", defaultValue = "10") Integer size,
         @RequestParam(name = "dataId", defaultValue = CLIENT_DATA_ID_PATTERN) String dataId,
         @RequestParam(name = "group", defaultValue = "") String group) {
-        return Result.success(subscriptionService.retrieveConfigs(page, size, dataId, group));
+        return Result.success(subscriptionCore.retrieveConfigs(page, size, dataId, group));
     }
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/TopicController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
similarity index 79%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/TopicController.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
index f95ffbb..1f6c601 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/controller/TopicController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
@@ -15,17 +15,16 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.controller;
+package org.apache.eventmesh.dashboard.console.controller;
 
-import org.apache.eventmesh.dashboard.core.dto.CreateTopicRequest;
-import org.apache.eventmesh.dashboard.core.dto.DeleteTopicRequest;
-import org.apache.eventmesh.dashboard.core.dto.Result;
-import org.apache.eventmesh.dashboard.core.model.TopicProperties;
-import org.apache.eventmesh.dashboard.core.service.TopicService;
+import org.apache.eventmesh.dashboard.common.dto.Result;
+import org.apache.eventmesh.dashboard.common.model.TopicProperties;
+import org.apache.eventmesh.dashboard.console.dto.CreateTopicRequest;
+import org.apache.eventmesh.dashboard.console.dto.DeleteTopicRequest;
+import org.apache.eventmesh.dashboard.service.store.TopicCore;
 
 import java.util.List;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -40,8 +39,10 @@
 @RequestMapping("/topic")
 public class TopicController {
 
-    @Autowired
-    TopicService topicService;
+    /**
+     * TODO expose implement by FunctionManager
+     */
+    TopicCore topicCore;
 
     /**
      * TODO Is OPTIONS method and @CrossOrigin necessary?
@@ -60,7 +61,7 @@
     @CrossOrigin
     @GetMapping
     public Result<List<TopicProperties>> getList() {
-        List<TopicProperties> topicList = topicService.getTopic();
+        List<TopicProperties> topicList = topicCore.getTopic();
         return Result.success(topicList);
     }
 
@@ -68,7 +69,7 @@
     @PostMapping
     public Result<Object> create(@RequestBody CreateTopicRequest createTopicRequest) {
         String topicName = createTopicRequest.getName();
-        topicService.createTopic(topicName);
+        topicCore.createTopic(topicName);
         return Result.success();
     }
 
@@ -76,7 +77,7 @@
     @DeleteMapping
     public Result<Object> delete(@RequestBody DeleteTopicRequest deleteTopicRequest) {
         String topicName = deleteTopicRequest.getName();
-        topicService.deleteTopic(topicName);
+        topicCore.deleteTopic(topicName);
         return Result.success();
     }
 }
\ No newline at end of file
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/connection/ConnectionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/connection/ConnectionController.java
deleted file mode 100644
index 72d407e..0000000
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/connection/ConnectionController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.console.controller.connection;
-
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class ConnectionController {
-
-}
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/CreateTopicRequest.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/dto/CreateTopicRequest.java
similarity index 89%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/CreateTopicRequest.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/dto/CreateTopicRequest.java
index 4a94be0..c84cee4 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/CreateTopicRequest.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/dto/CreateTopicRequest.java
@@ -15,13 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.dto;
+package org.apache.eventmesh.dashboard.console.dto;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import lombok.Data;
 
+/**
+ * TODO this class is copied from storage plugin, needs update
+ */
+
 @Data
 public class CreateTopicRequest {
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/DeleteTopicRequest.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/dto/DeleteTopicRequest.java
similarity index 89%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/DeleteTopicRequest.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/dto/DeleteTopicRequest.java
index dea2d15..da793b3 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/dto/DeleteTopicRequest.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/dto/DeleteTopicRequest.java
@@ -15,13 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.dto;
+package org.apache.eventmesh.dashboard.console.dto;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import lombok.Data;
 
+/**
+ * TODO this class is copied from storage plugin, needs update
+ */
+
 @Data
 public class DeleteTopicRequest {
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/GlobalExceptionHandler.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/exception/GlobalExceptionHandler.java
similarity index 84%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/GlobalExceptionHandler.java
rename to eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/exception/GlobalExceptionHandler.java
index 2bfba1c..891255d 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/exception/GlobalExceptionHandler.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/exception/GlobalExceptionHandler.java
@@ -15,10 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.exception;
+package org.apache.eventmesh.dashboard.console.exception;
 
-import org.apache.eventmesh.dashboard.core.dto.Result;
-import org.apache.eventmesh.dashboard.core.dto.Result.StatusMessage;
+import org.apache.eventmesh.dashboard.common.dto.Result;
+import org.apache.eventmesh.dashboard.common.dto.Result.StatusMessage;
+import org.apache.eventmesh.dashboard.common.enums.Status;
+import org.apache.eventmesh.dashboard.common.exception.BaseException;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -29,7 +31,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 /**
- * This class, in conjunction with {@linkplain org.apache.eventmesh.dashboard.core.enums.Status Status} and {@link BaseException},
+ * This class, in conjunction with {@linkplain Status Status} and {@link BaseException},
  * collectively implements customized error reporting.
  */
 
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/group/GroupService.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/group/GroupService.java
index e5a80c5..2afda6e 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/group/GroupService.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/group/GroupService.java
@@ -20,7 +20,6 @@
 import org.apache.eventmesh.dashboard.console.entity.group.GroupEntity;
 import org.apache.eventmesh.dashboard.console.entity.groupmember.GroupMemberEntity;
 
-
 import java.util.List;
 
 /**
diff --git a/eventmesh-dashboard-console/src/main/resources/application-dev.yml b/eventmesh-dashboard-console/src/main/resources/application-dev.yml
index d411315..3074e0c 100644
--- a/eventmesh-dashboard-console/src/main/resources/application-dev.yml
+++ b/eventmesh-dashboard-console/src/main/resources/application-dev.yml
@@ -31,8 +31,8 @@
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       url: jdbc:mysql://localhost:3306/eventmesh_dashboard?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
-      username: ${DB_USERNAME}
-      password: ${DB_PASSWORD}
+      username: ${DB_USERNAME:root}
+      password: ${DB_PASSWORD:password}
 
       initial-size: 1
       max-active: 50
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthExecutorTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthExecutorTest.java
index 2c5e49c..d7626ed 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthExecutorTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthExecutorTest.java
@@ -22,7 +22,6 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.mockito.ArgumentMatchers.any;
 
-import java.util.concurrent.CompletableFuture;
 import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication;
 import org.apache.eventmesh.dashboard.console.entity.health.HealthCheckResultEntity;
 import org.apache.eventmesh.dashboard.console.enums.health.HealthCheckStatus;
@@ -31,6 +30,9 @@
 import org.apache.eventmesh.dashboard.console.health.check.AbstractHealthCheckService;
 import org.apache.eventmesh.dashboard.console.health.check.config.HealthCheckObjectConfig;
 import org.apache.eventmesh.dashboard.console.service.health.impl.HealthDataServiceDatabaseImpl;
+
+import java.util.concurrent.CompletableFuture;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthServiceTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthServiceTest.java
index 06343fd..9a2c393 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthServiceTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/HealthServiceTest.java
@@ -21,6 +21,7 @@
 import org.apache.eventmesh.dashboard.console.health.check.AbstractHealthCheckService;
 import org.apache.eventmesh.dashboard.console.health.check.config.HealthCheckObjectConfig;
 import org.apache.eventmesh.dashboard.console.service.health.HealthDataService;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/check/impl/StorageRedisCheckTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/check/impl/StorageRedisCheckTest.java
index d7c5a58..74ac54c 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/check/impl/StorageRedisCheckTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/health/check/impl/StorageRedisCheckTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.eventmesh.dashboard.console.health.check.impl;
 
-import org.apache.eventmesh.dashboard.console.health.check.config.HealthCheckObjectConfig;
 import org.apache.eventmesh.dashboard.console.health.callback.HealthCheckCallback;
+import org.apache.eventmesh.dashboard.console.health.check.config.HealthCheckObjectConfig;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/integration/health/HealthServiceIntegrateTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/integration/health/HealthServiceIntegrateTest.java
index 7afb52f..e8fdb5f 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/integration/health/HealthServiceIntegrateTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/integration/health/HealthServiceIntegrateTest.java
@@ -17,13 +17,15 @@
 
 package org.apache.eventmesh.dashboard.console.integration.health;
 
-import java.util.List;
 import org.apache.eventmesh.dashboard.console.entity.health.HealthCheckResultEntity;
 import org.apache.eventmesh.dashboard.console.enums.health.HealthCheckType;
 import org.apache.eventmesh.dashboard.console.health.CheckResultCache;
 import org.apache.eventmesh.dashboard.console.health.HealthService;
 import org.apache.eventmesh.dashboard.console.health.check.config.HealthCheckObjectConfig;
 import org.apache.eventmesh.dashboard.console.service.health.HealthDataService;
+
+import java.util.List;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/connection/ConnectionMapperTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/connection/ConnectionMapperTest.java
index 7087e00..4f28229 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/connection/ConnectionMapperTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/connection/ConnectionMapperTest.java
@@ -24,7 +24,6 @@
 import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication;
 import org.apache.eventmesh.dashboard.console.entity.connection.ConnectionEntity;
 
-
 import java.util.Arrays;
 import java.util.List;
 
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/health/HealthCheckResultMapperTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/health/HealthCheckResultMapperTest.java
index d91cd22..1ceb8fc 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/health/HealthCheckResultMapperTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/health/HealthCheckResultMapperTest.java
@@ -19,14 +19,16 @@
 
 import static org.junit.jupiter.api.Assertions.*;
 
+import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication;
+import org.apache.eventmesh.dashboard.console.entity.health.HealthCheckResultEntity;
+
 import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication;
-import org.apache.eventmesh.dashboard.console.entity.health.HealthCheckResultEntity;
+
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/meta/MetaMapperTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/meta/MetaMapperTest.java
index 42e58f4..9d05b40 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/meta/MetaMapperTest.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/meta/MetaMapperTest.java
@@ -19,6 +19,7 @@
 
 import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication;
 import org.apache.eventmesh.dashboard.console.entity.meta.MetaEntity;
+
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/unit/group/TestGroupMapper.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/unit/group/TestGroupMapper.java
index f247c3f..f02fcaf 100644
--- a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/unit/group/TestGroupMapper.java
+++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/unit/group/TestGroupMapper.java
@@ -1,7 +1,6 @@
 package org.apache.eventmesh.dashboard.console.unit.group;
 
 import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication;
-
 import org.apache.eventmesh.dashboard.console.entity.group.GroupEntity;
 import org.apache.eventmesh.dashboard.console.mapper.group.OprGroupMapper;
 
diff --git a/eventmesh-dashboard-console/src/test/resources/application-test.yml b/eventmesh-dashboard-console/src/test/resources/application-test.yml
index b70a657..ee44e7c 100644
--- a/eventmesh-dashboard-console/src/test/resources/application-test.yml
+++ b/eventmesh-dashboard-console/src/test/resources/application-test.yml
@@ -22,8 +22,8 @@
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       url: jdbc:mysql://localhost:3306/eventmesh_dashboard_test?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
-      username: root
-      password: password
+      username: ${DB_USERNAME:root}
+      password: ${DB_PASSWORD:password}
 
       initial-size: 1
       max-active: 50
diff --git a/eventmesh-dashboard-core/pom.xml b/eventmesh-dashboard-core/pom.xml
index 651cad8..61d9a01 100644
--- a/eventmesh-dashboard-core/pom.xml
+++ b/eventmesh-dashboard-core/pom.xml
@@ -37,55 +37,19 @@
         <java.version>1.8</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <spring-boot.version>2.7.6</spring-boot.version>
     </properties>
 
     <dependencies>
-        <!-- versions managed by spring dependency management -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <scope>runtime</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-configuration-processor</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- utility -->
+        <!-- EventMesh Dashboard modules -->
         <dependency>
             <groupId>org.apache.eventmesh.dashboard.common</groupId>
             <artifactId>eventmesh-dashboard-common</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>3.13.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba.fastjson2</groupId>
-            <artifactId>fastjson2</artifactId>
-            <version>2.0.40</version>
-        </dependency>
-
-        <!-- unit test -->
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <version>5.5.0</version>
-            <scope>test</scope>
+            <groupId>org.apache.eventmesh.dashboard.service</groupId>
+            <artifactId>eventmesh-dashboard-service</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
         </dependency>
 
         <!-- meta -->
@@ -101,66 +65,5 @@
             <artifactId>rocketmq-client</artifactId>
             <version>4.9.7</version>
         </dependency>
-
-        <!-- Database -->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
-            <version>1.2.21</version>
-        </dependency>
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.5</version>
-        </dependency>
-        <dependency>
-            <groupId>com.mysql</groupId>
-            <artifactId>mysql-connector-j</artifactId>
-            <scope>runtime</scope>
-        </dependency>
     </dependencies>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>${spring-boot.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                    <encoding>UTF-8</encoding>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>${spring-boot.version}</version>
-                <configuration>
-                    <mainClass>org.apache.eventmesh.dashboard.core.EventMeshDashboardApplication</mainClass>
-                    <skip>true</skip>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>repackage</id>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
 </project>
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/EventMeshDashboardApplication.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/EventMeshDashboardApplication.java
deleted file mode 100644
index 7caeddb..0000000
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/EventMeshDashboardApplication.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.ServletComponentScan;
-
-@ServletComponentScan // Druid Monitor
-@SpringBootApplication
-public class EventMeshDashboardApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(EventMeshDashboardApplication.class, args);
-    }
-
-}
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/AdminProperties.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/AdminProperties.java
index b693d58..127d2e3 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/AdminProperties.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/AdminProperties.java
@@ -17,13 +17,18 @@
 
 package org.apache.eventmesh.dashboard.core.config;
 
-import org.apache.eventmesh.dashboard.core.constant.ConfigConst;
+import org.apache.eventmesh.dashboard.common.constant.ConfigConst;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
 import lombok.Data;
 
+/**
+ * TODO get configs from DB (console module's work)
+ */
+
+@Deprecated
 @Data
 @Component
 @ConfigurationProperties(prefix = ConfigConst.ADMIN_PROPS_PREFIX)
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
deleted file mode 100644
index 2176a64..0000000
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core.config;
-
-import org.apache.eventmesh.dashboard.core.constant.ConfigConst;
-import org.apache.eventmesh.dashboard.core.service.ConnectionService;
-import org.apache.eventmesh.dashboard.core.service.SubscriptionService;
-import org.apache.eventmesh.dashboard.core.service.TopicService;
-import org.apache.eventmesh.dashboard.core.service.meta.EtcdConnectionService;
-import org.apache.eventmesh.dashboard.core.service.meta.EtcdSubscriptionService;
-import org.apache.eventmesh.dashboard.core.service.meta.NacosConnectionService;
-import org.apache.eventmesh.dashboard.core.service.meta.NacosSubscriptionService;
-import org.apache.eventmesh.dashboard.core.service.store.RocketmqTopicService;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Use different registry SDK depending on the configured meta type;
- * Use different storage SDK depending on the configured storage type.
- */
-@Configuration
-public class BeanTypeConfig {
-
-    private final AdminProperties adminProperties;
-
-    public BeanTypeConfig(AdminProperties adminProperties) {
-        this.adminProperties = adminProperties;
-    }
-
-    @Bean
-    public ConnectionService connectionService() {
-        switch (adminProperties.getMeta().getType()) {
-            case ConfigConst.META_TYPE_NACOS:
-                return new NacosConnectionService(adminProperties);
-            case ConfigConst.META_TYPE_ETCD:
-                return new EtcdConnectionService();
-            default:
-                throw new IllegalArgumentException("Unsupported EventMesh Meta type: " + adminProperties.getMeta().getType());
-        }
-    }
-
-    @Bean
-    public SubscriptionService subscriptionService() {
-        switch (adminProperties.getMeta().getType()) {
-            case ConfigConst.META_TYPE_NACOS:
-                return new NacosSubscriptionService(adminProperties);
-            case ConfigConst.META_TYPE_ETCD:
-                return new EtcdSubscriptionService();
-            default:
-                throw new IllegalArgumentException("Unsupported EventMesh Meta type: " + adminProperties.getMeta().getType());
-        }
-    }
-
-    @Bean
-    public TopicService topicService() {
-        switch (adminProperties.getStore().getType()) {
-            case ConfigConst.STORE_TYPE_STANDALONE:
-                return null; // TODO StandaloneTopicService
-            case ConfigConst.STORE_TYPE_ROCKETMQ:
-                return new RocketmqTopicService(adminProperties);
-            case ConfigConst.STORE_TYPE_KAFKA:
-                return null; // TODO KafkaTopicService
-            default:
-                throw new IllegalArgumentException("Unsupported EventMesh Store type: " + adminProperties.getStore().getType());
-        }
-    }
-}
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/EtcdConnectionCore.java
similarity index 77%
copy from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java
copy to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/EtcdConnectionCore.java
index 9325b83..0a994bc 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/EtcdConnectionCore.java
@@ -15,8 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.model;
+package org.apache.eventmesh.dashboard.core.meta.connection;
 
-public class ConnectionInfo {
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class EtcdConnectionCore implements ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/NacosConnectionCore.java
similarity index 77%
copy from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java
copy to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/NacosConnectionCore.java
index 9325b83..6f02652 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/model/ConnectionInfo.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/connection/NacosConnectionCore.java
@@ -15,8 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.model;
+package org.apache.eventmesh.dashboard.core.meta.connection;
 
-public class ConnectionInfo {
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class NacosConnectionCore implements ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/EtcdSubscriptionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/EtcdSubscriptionCore.java
similarity index 74%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/EtcdSubscriptionService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/EtcdSubscriptionCore.java
index 9b11048..4fd39c8 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/EtcdSubscriptionService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/EtcdSubscriptionCore.java
@@ -15,21 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.service.meta;
+package org.apache.eventmesh.dashboard.core.meta.subscription;
 
-import org.apache.eventmesh.dashboard.core.dto.Result;
-import org.apache.eventmesh.dashboard.core.model.SubscriptionInfo;
-import org.apache.eventmesh.dashboard.core.service.SubscriptionService;
+import org.apache.eventmesh.dashboard.common.dto.Result;
+import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
 
 import java.util.List;
 
-import org.springframework.stereotype.Service;
-
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@Service
-public class EtcdSubscriptionService implements SubscriptionService {
+public class EtcdSubscriptionCore implements SubscriptionCore {
 
     @Override
     public String retrieveConfig(String dataId, String group) {
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/NacosSubscriptionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/NacosSubscriptionCore.java
similarity index 87%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/NacosSubscriptionService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/NacosSubscriptionCore.java
index 3122103..0d665c6 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/NacosSubscriptionService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/subscription/NacosSubscriptionCore.java
@@ -15,22 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.service.meta;
+package org.apache.eventmesh.dashboard.core.meta.subscription;
 
-import static org.apache.eventmesh.dashboard.core.enums.Status.NACOS_EMPTY_RESP_ERR;
-import static org.apache.eventmesh.dashboard.core.enums.Status.NACOS_GET_CONFIGS_ERR;
-import static org.apache.eventmesh.dashboard.core.enums.Status.NACOS_LOGIN_EMPTY_RESP_ERR;
-import static org.apache.eventmesh.dashboard.core.enums.Status.NACOS_LOGIN_ERR;
-import static org.apache.eventmesh.dashboard.core.enums.Status.NACOS_SDK_CONFIG_ERR;
+import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_EMPTY_RESP_ERR;
+import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_GET_CONFIGS_ERR;
+import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_LOGIN_EMPTY_RESP_ERR;
+import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_LOGIN_ERR;
+import static org.apache.eventmesh.dashboard.common.enums.Status.NACOS_SDK_CONFIG_ERR;
 
+import org.apache.eventmesh.dashboard.common.constant.ConfigConst;
+import org.apache.eventmesh.dashboard.common.constant.NacosConst;
+import org.apache.eventmesh.dashboard.common.dto.Result;
+import org.apache.eventmesh.dashboard.common.exception.EventMeshAdminException;
+import org.apache.eventmesh.dashboard.common.exception.MetaException;
+import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
 import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.core.constant.ConfigConst;
-import org.apache.eventmesh.dashboard.core.constant.NacosConst;
-import org.apache.eventmesh.dashboard.core.dto.Result;
-import org.apache.eventmesh.dashboard.core.exception.EventMeshAdminException;
-import org.apache.eventmesh.dashboard.core.exception.MetaException;
-import org.apache.eventmesh.dashboard.core.model.SubscriptionInfo;
-import org.apache.eventmesh.dashboard.core.service.SubscriptionService;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
 
 import java.util.ArrayList;
 import java.util.Base64;
@@ -42,7 +42,6 @@
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
@@ -57,8 +56,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@Service
-public class NacosSubscriptionService implements SubscriptionService {
+public class NacosSubscriptionCore implements SubscriptionCore {
 
     AdminProperties adminProperties;
 
@@ -68,7 +66,7 @@
 
     private static String HTTP_PREFIX = ConfigConst.HTTP_PREFIX;
 
-    public NacosSubscriptionService(AdminProperties adminProperties) {
+    public NacosSubscriptionCore(AdminProperties adminProperties) {
         this.adminProperties = adminProperties;
 
         nacosProps.setProperty(PropertyKeyConst.SERVER_ADDR, adminProperties.getMeta().getNacos().getAddr());
@@ -114,7 +112,7 @@
 
     /**
      * Retrieve a list of configs with Nacos OpenAPI, because Nacos SDK doesn't support listing and fuzzy matching.
-     *
+     * <p>
      * TODO Granularity should be based on subscriptions rather than Runtime;
      * retrieve all subscriptions for each Runtime, rather than retrieving subscriptions for each individual Runtime.
      */
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/EtcdConnectionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/EtcdConnectionService.java
deleted file mode 100644
index 3bad3a2..0000000
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/EtcdConnectionService.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core.service.meta;
-
-import org.apache.eventmesh.dashboard.core.service.ConnectionService;
-
-import org.springframework.stereotype.Service;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-@Service
-public class EtcdConnectionService implements ConnectionService {
-
-}
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/NacosConnectionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/NacosConnectionService.java
deleted file mode 100644
index ef0219a..0000000
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/meta/NacosConnectionService.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core.service.meta;
-
-import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.core.service.ConnectionService;
-
-import org.springframework.stereotype.Service;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-@Service
-public class NacosConnectionService implements ConnectionService {
-
-    public NacosConnectionService(AdminProperties adminProperties) {
-    }
-
-}
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/store/RocketmqTopicService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicCore.java
similarity index 80%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/store/RocketmqTopicService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicCore.java
index bc0b7bf..5dba4c2 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/store/RocketmqTopicService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicCore.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.service.store;
+package org.apache.eventmesh.dashboard.core.store;
 
+import org.apache.eventmesh.dashboard.common.model.TopicProperties;
 import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.core.model.TopicProperties;
-import org.apache.eventmesh.dashboard.core.service.TopicService;
+import org.apache.eventmesh.dashboard.service.store.TopicCore;
 
 import java.util.List;
 
@@ -33,11 +33,11 @@
 
 @Slf4j
 @Service
-public class RocketmqTopicService implements TopicService {
+public class RocketmqTopicCore implements TopicCore {
 
     AdminProperties adminProperties;
 
-    public RocketmqTopicService(AdminProperties adminProperties) {
+    public RocketmqTopicCore(AdminProperties adminProperties) {
         this.adminProperties = adminProperties;
     }
 
diff --git a/eventmesh-dashboard-core/src/main/resources/application-dev.yml b/eventmesh-dashboard-core/src/main/resources/application-dev.yml
index f61a3c3..b3c870a 100644
--- a/eventmesh-dashboard-core/src/main/resources/application-dev.yml
+++ b/eventmesh-dashboard-core/src/main/resources/application-dev.yml
@@ -14,62 +14,37 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-spring:
-  datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    druid:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      url: jdbc:mysql://localhost:3306/eventmesh-dashboard?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
-      username: root
-      password: root
 
-      initial-size: 1
-      max-active: 50
-      min-idle: 5
-      max-wait: 6000
-      validation-query: select 'x'
-      validation-query-timeout: 15
-      test-on-borrow: false
-      test-while-idle: true
-      min-evictable-idle-time-millis: 300000
-
-      stat-view-servlet:
-        enabled: true
-        url-pattern: /druid/*
-      filter:
-        wall:
-          config:
-            multi-statement-allow: true # corresponds to allowMultiQueries
-
-eventmesh:
-  meta:
-    # registry type: nacos, etcd
-    type: nacos
-    nacos:
-      addr: 127.0.0.1:8848
-      namespace: # namespace id, empty by default
-      authEnabled: false
-      protocol: http # http or https
-      username:
-      password:
-      # Alibaba Cloud MSE Nacos auth, not nacos.token.secret.key
-      accessKey:
-      secretKey:
-    etcd:
-      addr: # TODO
-    # timeout for admin client
-    timeoutMs: 5000
-  store:
-    # Event Store type, should be consistent with the EventMesh Runtime configuration.
-    type: rocketmq
-    standalone:
-    # TODO
-    rocketmq:
-      namesrvAddr: 127.0.0.1:9876;127.0.0.1:9876
-      clusterName: DefaultCluster
-      accessKey: '********'
-      secretKey: '********'
-    kafka:
-      namesrvAddr: localhost:9092;localhost:9092
-      partitions: 1
-      replicationFactors: 1
\ No newline at end of file
+# eventmesh cluster configs are stored in DB and below is a example which can be deleted after config mgmt completed
+#eventmesh:
+#  meta:
+#    # registry type: nacos, etcd
+#    type: nacos
+#    nacos:
+#      addr: 127.0.0.1:8848
+#      namespace: # namespace id, empty by default
+#      authEnabled: false
+#      protocol: http # http or https
+#      username:
+#      password:
+#      # Alibaba Cloud MSE Nacos auth, not nacos.token.secret.key
+#      accessKey:
+#      secretKey:
+#    etcd:
+#      addr: # TODO
+#    # timeout for admin client
+#    timeoutMs: 5000
+#  store:
+#    # Event Store type, should be consistent with the EventMesh Runtime configuration.
+#    type: rocketmq
+#    standalone:
+#    # TODO
+#    rocketmq:
+#      namesrvAddr: 127.0.0.1:9876;127.0.0.1:9876
+#      clusterName: DefaultCluster
+#      accessKey: '********'
+#      secretKey: '********'
+#    kafka:
+#      namesrvAddr: localhost:9092;localhost:9092
+#      partitions: 1
+#      replicationFactors: 1
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/resources/application.yml b/eventmesh-dashboard-core/src/main/resources/application.yml
deleted file mode 100644
index 434cf55..0000000
--- a/eventmesh-dashboard-core/src/main/resources/application.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-spring:
-  application:
-    name: eventmesh-dashboard
-  profiles:
-    active: dev
-
-server:
-  port: 8080
-  servlet:
-    encoding:
-      charset: UTF-8
-      enabled: true
-      force: true
-
-logging:
-  config: classpath:logback.xml
-
-mybatis-plus:
-  mapper-locations: classpath*:mappers/**/*.xml # Default value
-  typeAliasesPackage: org.apache.eventmesh.dashboard.entity
-  configuration:
-    call-setters-on-nulls: true # Display fields with null values in query results
-    map-underscore-to-camel-case: true # Convert database underscore naming convention to camel case (default is true)
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # Output SQL execution logs to console (for debugging)
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/resources/logback.xml b/eventmesh-dashboard-core/src/main/resources/logback.xml
deleted file mode 100644
index 447ace7..0000000
--- a/eventmesh-dashboard-core/src/main/resources/logback.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<configuration>
-	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-		<encoder charset="UTF-8">
-			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %p %t - %m%n</pattern>
-		</encoder>
-	</appender>
-
-	<appender name="FILE"
-		class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${user.home}/logs/eventmesh-dashboard.log</file>
-		<append>true</append>
-		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-			<fileNamePattern>${user.home}/logs/eventmesh-dashboard-%d{yyyy-MM-dd}.%i.log
-			</fileNamePattern>
-			<timeBasedFileNamingAndTriggeringPolicy
-				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-				<maxFileSize>104857600</maxFileSize>
-			</timeBasedFileNamingAndTriggeringPolicy>
-			<MaxHistory>10</MaxHistory>
-		</rollingPolicy>
-		<encoder>
-            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %p %t - %m%n</pattern>
-			<charset class="java.nio.charset.Charset">UTF-8</charset>
-		</encoder>
-	</appender>
-
-	<root level="INFO">
-		<appender-ref ref="STDOUT" />
-		<appender-ref ref="FILE" />
-	</root>
-
-</configuration> 
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/test/java/org/apache/eventmesh/dashboard/core/EventMeshDashboardApplicationTest.java b/eventmesh-dashboard-core/src/test/java/org/apache/eventmesh/dashboard/core/EventMeshDashboardApplicationTest.java
deleted file mode 100644
index cde38a4..0000000
--- a/eventmesh-dashboard-core/src/test/java/org/apache/eventmesh/dashboard/core/EventMeshDashboardApplicationTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.core;
-
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class EventMeshDashboardApplicationTest {
-
-//    @Test
-//    void contextLoads() {
-//    }
-
-}
diff --git a/eventmesh-dashboard-service/pom.xml b/eventmesh-dashboard-service/pom.xml
index f445ada..ebcd111 100644
--- a/eventmesh-dashboard-service/pom.xml
+++ b/eventmesh-dashboard-service/pom.xml
@@ -8,14 +8,22 @@
         <artifactId>eventmesh-dashboard</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
-
     <groupId>org.apache.eventmesh.dashboard.service</groupId>
     <artifactId>eventmesh-dashboard-service</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>eventmesh-dashboard-core</name>
 
     <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
+        <java.version>1.8</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+        <!-- EventMesh Dashboard modules -->
+        <dependency>
+            <groupId>org.apache.eventmesh.dashboard.common</groupId>
+            <artifactId>eventmesh-dashboard-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
 </project>
\ No newline at end of file
diff --git a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java
deleted file mode 100644
index 926f48c..0000000
--- a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.dashboard.service;
-
-public class Main {
-    public static void main(String[] args) {
-    }
-}
\ No newline at end of file
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/ConnectionService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionCore.java
similarity index 91%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/ConnectionService.java
rename to eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionCore.java
index 106421c..7fbed10 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/ConnectionService.java
+++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionCore.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.service;
+package org.apache.eventmesh.dashboard.service.meta;
 
 /**
  * "Connection" refers to the subscription relationship between connectors.
@@ -23,6 +23,6 @@
  * reported by the connector.
  */
 
-public interface ConnectionService {
+public interface ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/SubscriptionService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionCore.java
similarity index 84%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/SubscriptionService.java
rename to eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionCore.java
index 72b07cc..2512a95 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/SubscriptionService.java
+++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionCore.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.service;
+package org.apache.eventmesh.dashboard.service.meta;
 
-import org.apache.eventmesh.dashboard.core.dto.Result;
-import org.apache.eventmesh.dashboard.core.model.SubscriptionInfo;
+import org.apache.eventmesh.dashboard.common.dto.Result;
+import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
 
 import java.util.List;
 
@@ -28,7 +28,7 @@
  * reported by the EventMesh runtime.
  */
 
-public interface SubscriptionService {
+public interface SubscriptionCore {
 
     String retrieveConfig(String dataId, String group);
 
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/TopicService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicCore.java
similarity index 87%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/TopicService.java
rename to eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicCore.java
index 980aed3..2b37e53 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/service/TopicService.java
+++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicCore.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.eventmesh.dashboard.core.service;
+package org.apache.eventmesh.dashboard.service.store;
 
-import org.apache.eventmesh.dashboard.core.model.TopicProperties;
+import org.apache.eventmesh.dashboard.common.model.TopicProperties;
 
 import java.util.List;
 
@@ -25,7 +25,7 @@
  * Manage topics of eventmesh-storage-plugin (EventMesh Store).
  */
 
-public interface TopicService {
+public interface TopicCore {
 
     /**
      * TODO rename to getTopics after being implemented