diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 0000000000..4cdacb670c
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,29 @@
+name: Deploy to GitHub Pages
+
+on:
+ push:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+
+ steps:
+ # Step 1: Checkout repository
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ # Step 2: Set up Node.js environment (if using Node.js)
+ - name: Set up Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16 # Replace with your project's Node.js version
+
+ - name: Build project
+ run: cd docs && bash generatedocs.sh # Adjust based on your project's build command
+
+ # Step 4: Deploy to GitHub Pages
+ - name: Deploy to GitHub Pages
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./docs # Replace with your build output directory
diff --git a/.gitignore b/.gitignore
index d36895b670..9f7ad616e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,4 +43,8 @@ dist
packages/host-node/fixtures/*.data.json
# rust build
-target
\ No newline at end of file
+target
+
+# generated docs
+docs/packages
+docs/index.*
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index 564fe4ca4d..e93470e439 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3522,6 +3522,16 @@ version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+[[package]]
+name = "parking_lot"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
[[package]]
name = "parking_lot_core"
version = "0.9.10"
@@ -4796,6 +4806,15 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "signature"
version = "2.2.0"
@@ -5260,7 +5279,9 @@ dependencies = [
"bytes",
"libc",
"mio",
+ "parking_lot",
"pin-project-lite",
+ "signal-hook-registry",
"socket2",
"tokio-macros",
"windows-sys 0.52.0",
diff --git a/docs/base.html b/docs/base.html
new file mode 100644
index 0000000000..dc4ee216c2
--- /dev/null
+++ b/docs/base.html
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+ Usherlabs Docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Usher Labs
+
+
+
+
+
+
+
+
+
+
+
+
Packages
+
+
+
+ packages_list
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/generatedocs.sh b/docs/generatedocs.sh
new file mode 100644
index 0000000000..c9bb40e131
--- /dev/null
+++ b/docs/generatedocs.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# run this command to generate docs `bash generatedocs.sh`
+
+# Create an array of destinations we want to generate docs for
+projects_dirs=(
+ "../ic/libraries"
+ "../rs/verity-client"
+ "../rs/local-verify"
+ "../rs/remote-verify"
+ "../rs/verity-client"
+ "../zk/guest"
+ "../zk/host"
+)
+
+# The template for the list
+item_html_template='
+