diff --git a/.github/workflows/tagrelease.yml b/.github/workflows/tagrelease.yml
new file mode 100644
index 00000000..4dff674c
--- /dev/null
+++ b/.github/workflows/tagrelease.yml
@@ -0,0 +1,25 @@
+name: Create Release on every tag push in `production`
+
+on:
+  push:
+    branches:
+      - production
+    tags:
+      - '*'
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          ref: production
+      - uses: actions/setup-node@v3
+        with:
+          node-version: 18
+      - run: npm ci && npm run build
+      - run: cd dist && zip -r ../phanpy-dist.zip . && cd ..
+      - uses: softprops/action-gh-release@v1
+        with:
+          generate_release_notes: true
+          files: phanpy-dist.zip
diff --git a/.gitignore b/.gitignore
index aa759db6..a007290c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,4 +25,5 @@ dist-ssr
 
 # Custom
 .env.dev
-src/data/instances-full.json
\ No newline at end of file
+src/data/instances-full.json
+phanpy-dist.zip
\ No newline at end of file