diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 000000000000..0ddefc8232c1
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,38 @@
+{
+ "name": "Shenyu DevContainer",
+ "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
+ "features": {
+ "ghcr.io/devcontainers/features/java:1": {
+ "version": "17",
+ "installMaven": "true",
+ "installGradle": "false"
+ },
+ "ghcr.io/devcontainers/features/node:1": {
+ "version": "20"
+ },
+ "ghcr.io/devcontainers/features/git-lfs:1.1.0": {}
+ },
+ "customizations": {
+ "vscode": {
+ "settings": {},
+ // same extensions as Gitpod, should match /.gitpod.yml
+ "extensions": [
+ "vscjava.vscode-java-pack",
+ "editorconfig.editorconfig",
+ "dbaeumer.vscode-eslint",
+ "stylelint.vscode-stylelint",
+ "DavidAnson.vscode-markdownlint",
+ "ms-azuretools.vscode-docker",
+ "cweijan.vscode-database-client2",
+ "GitHub.vscode-pull-request-github"
+ ]
+ }
+ },
+ "portsAttributes": {
+ "8000": {
+ "label": "Shenyu Admin",
+ "onAutoForward": "notify"
+ }
+ },
+ "postCreateCommand": "java -version"
+}
diff --git a/.gitpod.yml b/.gitpod.yml
new file mode 100644
index 000000000000..43008e844a76
--- /dev/null
+++ b/.gitpod.yml
@@ -0,0 +1,51 @@
+additionalRepositories:
+ - url: https://github.com/apache/shenyu-dashboard.git
+ checkoutLocation: frontend
+
+tasks:
+
+ - name: Run backend
+ before: cd ./shenyu-admin
+ command: |
+ gp sync-await setup-backend
+ mvn spring-boot:run
+
+ - name: Run frontend
+ before: cd ../frontend
+ command: |
+ gp sync-await setup-frontend && gp ports await 9095
+ npm start
+ openMode: split-right
+
+ - name: Setup backend
+ init: |
+ sdk install java 17.0.11.fx-zulu < /dev/null
+ sdk default java 17.0.11.fx-zulu < /dev/null
+ mvn clean install -DskipTests
+ command: |
+ gp sync-done setup-backend
+ exit 0
+
+ - name: Setup frontend
+ before: cd ../frontend
+ init: |
+ npm install
+ command: |
+ gp sync-done setup-frontend
+ exit 0
+ openMode: split-right
+
+vscode:
+ extensions:
+ - vscjava.vscode-java-pack
+ - editorconfig.editorconfig
+ - dbaeumer.vscode-eslint
+ - stylelint.vscode-stylelint
+ - DavidAnson.vscode-markdownlint
+ - ms-azuretools.vscode-docker
+ - cweijan.vscode-database-client2
+ - GitHub.vscode-pull-request-github
+
+ports:
+ - port: 9095
+ onOpen: ignore
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 283764387c11..7d51206deccc 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -39,6 +39,7 @@ header:
- '**/.gitignore'
- '**/.gitmodules'
- '**/.git/**'
+ - '**/.gitpod.yml'
- '**/.travis.yml'
- '**/.codecov.yml'
- '**/.mvn/jvm.config'
diff --git a/README.md b/README.md
index a5b687b24815..736ec69ebe2b 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,9 @@