diff --git a/.github/workflows/book-tests.yml b/.github/workflows/book-tests.yml
new file mode 100644
index 00000000..f9c8efd1
--- /dev/null
+++ b/.github/workflows/book-tests.yml
@@ -0,0 +1,52 @@
+# Documentation and mdbook related jobs.
+# Heavily inspired by Reth https://github.com/paradigmxyz/reth/blob/main/.github/workflows/book.yml
+
+name: book-tests
+
+on:
+ pull_request:
+ branches: [main]
+ paths:
+ - 'book/**'
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ name: test
+ timeout-minutes: 60
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install mdbook
+ run: |
+ mkdir mdbook
+ curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
+ echo $(pwd)/mdbook >> $GITHUB_PATH
+ - name: Install mdbook-template
+ run: |
+ mkdir mdbook-template
+ curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template
+ echo $(pwd)/mdbook-template >> $GITHUB_PATH
+ - name: Run tests
+ working-directory: ./book
+ run: mdbook test
+
+ lint:
+ runs-on: ubuntu-latest
+ name: lint
+ timeout-minutes: 60
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install mdbook-linkcheck
+ run: |
+ mkdir mdbook-linkcheck
+ curl -sSL -o mdbook-linkcheck.zip https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip
+ unzip mdbook-linkcheck.zip -d ./mdbook-linkcheck
+ chmod +x $(pwd)/mdbook-linkcheck/mdbook-linkcheck
+ echo $(pwd)/mdbook-linkcheck >> $GITHUB_PATH
+ - name: Run linkcheck
+ working-directory: ./book
+ run: mdbook-linkcheck --standalone
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 28b1d647..e6c75a19 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -13,7 +13,7 @@ env:
REGISTRY_IMAGE: flashbots/rollup-boost
jobs:
- build:
+ release:
name: Publish Docker Image
strategy:
matrix:
diff --git a/.vercel/build.sh b/.vercel/build.sh
new file mode 100644
index 00000000..5e899e2a
--- /dev/null
+++ b/.vercel/build.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -e
+
+mkdir -p $HOME/bin
+export PATH=$HOME/bin:$PATH
+REPO_ROOT=$(pwd)
+
+echo "Installing mdbook..."
+curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz
+chmod +x ./mdbook
+cp ./mdbook $HOME/bin/
+
+echo "Installing mdbook-template..."
+curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz
+chmod +x ./mdbook-template
+cp ./mdbook-template $HOME/bin/
+
+echo "Installing Rust..."
+curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | RUSTUP_HOME=/tmp/rustup HOME=/tmp sh -s -- -y
+export PATH="/tmp/.cargo/bin:$PATH"
+export RUSTUP_HOME=/tmp/rustup
+export CARGO_HOME=/tmp/.cargo
+
+rustup toolchain install nightly
+rustup default nightly
+
+echo "Verifying installations..."
+which mdbook
+which mdbook-template
+rustc --version
+
+echo "Building the book..."
+cd "${REPO_ROOT}/book"
+mdbook build
+
+echo "Building Rust documentation..."
+cd "${REPO_ROOT}"
+export RUSTDOCFLAGS="--cfg docsrs --show-type-layout --generate-link-to-definition --enable-index-page -Zunstable-options"
+cargo doc --all-features --no-deps || {
+ echo "Cargo doc failed, but continuing with mdbook only"
+}
+
+# Try to copy the API docs if they were generated
+if [ -d "${REPO_ROOT}/target/doc" ]; then
+ echo "Copying API documentation..."
+ mkdir -p "${REPO_ROOT}/book/book/api"
+ cp -r "${REPO_ROOT}/target/doc"/* "${REPO_ROOT}/book/book/api/"
+else
+ echo "API documentation not generated, continuing with mdbook only"
+fi
+
+# Create a final output directory for Vercel
+mkdir -p "${REPO_ROOT}/vercel-output"
+cp -r "${REPO_ROOT}/book/book"/* "${REPO_ROOT}/vercel-output/"
+
+echo "Build completed successfully!"
diff --git a/book/book.toml b/book/book.toml
new file mode 100644
index 00000000..d8d7defd
--- /dev/null
+++ b/book/book.toml
@@ -0,0 +1,20 @@
+[book]
+authors = ["Rollup Boost Core Contributors"]
+language = "en"
+multilingual = false
+src = "src"
+title = "Rollup Boost"
+description = "The Rollup Boost is a sidecar to enable rollup extensions"
+
+[output.html]
+theme = "theme"
+git-repository-url = "https://github.com/flashbots/rollup-boost"
+default-theme = "ayu"
+no-section-label = true
+
+[output.html.fold]
+enable = true
+level = 1
+
+[build]
+build-dir = "book"
diff --git a/book/src/README.md b/book/src/README.md
new file mode 100644
index 00000000..3df84959
--- /dev/null
+++ b/book/src/README.md
@@ -0,0 +1,3 @@
+# rollup-boost book
+
+Rollup Boost is a sidecar that enables rollup extensions.
\ No newline at end of file
diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md
new file mode 100644
index 00000000..320aa2da
--- /dev/null
+++ b/book/src/SUMMARY.md
@@ -0,0 +1,3 @@
+# Summary
+
+- [Introduction](./README.md)
\ No newline at end of file
diff --git a/book/theme/head.hbs b/book/theme/head.hbs
new file mode 100644
index 00000000..15f76b66
--- /dev/null
+++ b/book/theme/head.hbs
@@ -0,0 +1,6 @@
+
+
+
+{{!-- TODO: add logo --}}
+{{!-- --}}
+{{!-- --}}
\ No newline at end of file
diff --git a/vercel.json b/vercel.json
new file mode 100644
index 00000000..b00648da
--- /dev/null
+++ b/vercel.json
@@ -0,0 +1,10 @@
+{
+ "version": 2,
+ "buildCommand": "chmod +x ./.vercel/build.sh && ./.vercel/build.sh",
+ "outputDirectory": "vercel-output",
+ "ignoreCommand": "git diff --quiet HEAD^ HEAD ./book/",
+ "github": {
+ "silent": false,
+ "autoJobCancelation": true
+ }
+}