diff --git a/web/.gitignore b/web/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..d5f19d89b308d36ee9e27b912015b0f75ec2f03f
--- /dev/null
+++ b/web/.gitignore
@@ -0,0 +1,2 @@
+node_modules
+package-lock.json
diff --git a/web/index.d.ts b/web/index.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..97eba9a747eec2cae18a8d769975ee491be54432
--- /dev/null
+++ b/web/index.d.ts
@@ -0,0 +1,2 @@
+export * from './gosdn/core/core_grpc_web_pb.d';
+export * from './gosdn/core/core_pb.d';
diff --git a/web/index.js b/web/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a019ec58fee9f80eb67f195f75a34a8a18bf05b
--- /dev/null
+++ b/web/index.js
@@ -0,0 +1,14 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./gosdn/core/core_grpc_web_pb.d"), exports);
+__exportStar(require("./gosdn/core/core_pb.d"), exports);
diff --git a/web/index.ts b/web/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b74306360e2bed8921ab851a41024869e723faa3
--- /dev/null
+++ b/web/index.ts
@@ -0,0 +1,2 @@
+export * from './gosdn/core/core_grpc_web_pb.d'
+export * from './gosdn/core/core_pb.d'
diff --git a/web/package.json b/web/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..238433bb6e7c89f8e36159d5d4e83ad778b7b33b
--- /dev/null
+++ b/web/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "gosdn-web",
+  "version": "1.0.0",
+  "description": "gosdn-web allows to interact with a goSDN via its gRPC-API",
+  "main": "index.js",
+  "types": "index.d.ts",
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "gosdn",
+    "github.com"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://code.fbi.h-da.de/danet/api/web"
+  },
+  "author": "goSDN Team",
+  "license": "MIT",
+  "dependencies": {
+    "google-protobuf": "^3.17.3",
+    "grpc-web": "^1.2.1"
+  },
+  "devDependencies": {
+    "@types/google-protobuf": "^3.15.4",
+    "typescript": "^4.3.5"
+  }
+}
diff --git a/web/tsconfig.json b/web/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..7d0aeb84fa57a73df21f9d0a5a6e46085fe78dc6
--- /dev/null
+++ b/web/tsconfig.json
@@ -0,0 +1,11 @@
+{
+  "compilerOptions": {
+    "module": "commonjs",
+    "target": "es2015",
+    "declaration": true,
+  },
+  "exclude": [
+      "./gosdn",
+      "./github.com"
+  ]
+}