diff --git a/Cargo.lock b/Cargo.lock
index caa4930..2a0b3ff 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -116,7 +116,7 @@ dependencies = [
]
[[package]]
-name = "geormerge-demo"
+name = "geomerge-demo"
version = "0.1.0"
dependencies = [
"geomerge",
diff --git a/crates/geormerge-demo/Cargo.toml b/crates/geomerge-demo/Cargo.toml
similarity index 89%
rename from crates/geormerge-demo/Cargo.toml
rename to crates/geomerge-demo/Cargo.toml
index 116a229..b9336e7 100644
--- a/crates/geormerge-demo/Cargo.toml
+++ b/crates/geomerge-demo/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "geormerge-demo"
+name = "geomerge-demo"
version = "0.1.0"
edition.workspace = true
license.workspace = true
diff --git a/crates/geomerge-demo/README.md b/crates/geomerge-demo/README.md
new file mode 100644
index 0000000..0f804c4
--- /dev/null
+++ b/crates/geomerge-demo/README.md
@@ -0,0 +1,35 @@
+## Geomerge Demo
+
+This demo shows how to store and read data from Geomerge.
+
+The demo:
+1. loads the compiled `paths.json` schema,
+2. creates a Geomerge store,
+3. inserts a small graph dataset in one transaction,
+4. reads the inserted edge back,
+5. persists the store to bytes,
+6. reloads it, and checks that the restored store matches the original.
+
+
+
+The SVG is generated from `docs/diagrams/workflow.dot`. To regenerate it after editing the `.dot` source, run:
+
+```sh
+bash docs/diagrams/make_figures.sh docs/diagrams
+```
+
+### Run
+
+```sh
+cargo run -p geomerge-demo
+```
+
+Expected output includes table and law counts, row counts for graphs, vertices, and edges, edge endpoints, and persisted byte size.
+
+### Test
+
+```sh
+cargo test -p geomerge-demo
+```
+
+The tests cover the successful store, read, and persistence round trip, plus a rejected invalid edge insert that must leave the store unchanged.
diff --git a/crates/geomerge-demo/docs/diagrams/make_figures.sh b/crates/geomerge-demo/docs/diagrams/make_figures.sh
new file mode 100755
index 0000000..6d30150
--- /dev/null
+++ b/crates/geomerge-demo/docs/diagrams/make_figures.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+# You need to have Graphviz installed to run this script
+# On Debian-based OSes, you can install it using: sudo apt-get install graphviz
+
+# Directory containing .dot files. Defaults to the script's own directory so the
+# script works regardless of the caller's working directory.
+SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
+ASSET_DIR=${1:-"${SCRIPT_DIR}"}
+
+# Make figures from .dot files
+for f in "${ASSET_DIR}"/*.dot; do
+ dot -Tsvg "$f" -o "${f%.dot}.svg"
+done
diff --git a/crates/geormerge-demo/docs/diagrams/workflow.dot b/crates/geomerge-demo/docs/diagrams/workflow.dot
similarity index 99%
rename from crates/geormerge-demo/docs/diagrams/workflow.dot
rename to crates/geomerge-demo/docs/diagrams/workflow.dot
index addc8af..ee724d2 100644
--- a/crates/geormerge-demo/docs/diagrams/workflow.dot
+++ b/crates/geomerge-demo/docs/diagrams/workflow.dot
@@ -36,7 +36,7 @@ fixture_rows [label = "Fixture Rows\n(graphs, vertices, edge)", fillcolor = "#E8
}
subgraph cluster_demo {
-label = "geormerge-demo (run_demo)"
+label = "geomerge-demo (run_demo)"
style = "rounded"
color = "#666666"
fontcolor = "#333333"
diff --git a/crates/geormerge-demo/docs/diagrams/workflow.svg b/crates/geomerge-demo/docs/diagrams/workflow.svg
similarity index 99%
rename from crates/geormerge-demo/docs/diagrams/workflow.svg
rename to crates/geomerge-demo/docs/diagrams/workflow.svg
index 3c497a4..23f3e81 100644
--- a/crates/geormerge-demo/docs/diagrams/workflow.svg
+++ b/crates/geomerge-demo/docs/diagrams/workflow.svg
@@ -17,7 +17,7 @@
cluster_demo
-geormerge-demo (run_demo)
+geomerge-demo (run_demo)
cluster_loading
diff --git a/crates/geormerge-demo/src/main.rs b/crates/geomerge-demo/src/main.rs
similarity index 100%
rename from crates/geormerge-demo/src/main.rs
rename to crates/geomerge-demo/src/main.rs
diff --git a/crates/geormerge-demo/README.md b/crates/geormerge-demo/README.md
deleted file mode 100644
index d57ee6b..0000000
--- a/crates/geormerge-demo/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## Geomerge Demo
-
-This demo show how to store and read data from Geomerge.
-
-The demo
-1. loads the compiled `paths.json` schema
-2. creates a Geomerge store
-3. inserts a small graph dataset in one transaction
-4. reads the inserted edge back
-5. persists the store to bytes
-6. reloads it and checks that the restored store matches the original.
-
-
-
-### Run
-
-```sh
-cargo run -p geormerge-demo
-```
-
-Expected output includes table and law counts, stored graph row counts, edge endpoints, and persisted byte size.
-
-### Test
-
-```sh
-cargo test -p geormerge-demo
-```
-
-The tests cover the successful store, read, and persistence round trip, plus a rejected invalid edge insert that must leave the store unchanged.
diff --git a/crates/geormerge-demo/docs/diagrams/make_figures.sh b/crates/geormerge-demo/docs/diagrams/make_figures.sh
deleted file mode 100644
index c688dcc..0000000
--- a/crates/geormerge-demo/docs/diagrams/make_figures.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-# You need to have Graphviz installed to run this script
-# On Debian-based OSes, you can install it using: sudo apt-get install graphviz
-
-# Directory containing .dot files (with default value)
-ASSET_DIR=${1:-"."}
-
-# Make figures from .dot files
-for f in "${ASSET_DIR}"/*.dot; do
- dot -Tsvg "$f" -o "${f%.dot}.svg"
-done