Skip to content

docs: add the documentation site - #491

Open
LeeroyHannigan wants to merge 3 commits into
mainfrom
feat/docs-site
Open

LeeroyHannigan wants to merge 3 commits into
mainfrom
feat/docs-site

Conversation

@LeeroyHannigan

@LeeroyHannigan LeeroyHannigan commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Adds a documentation site built from docs/ with Docusaurus 3.10, under website/. The Markdown files stay where they are and keep rendering on GitHub; the site adds navigation, search, a landing page and a theme matching extenddb.org.

Today the "Documentation" link on extenddb.org, llms.txt and the repository's index.html send readers to the GitHub directory listing of docs/ (68 files, about 160,000 words, with ledgers and drafts beside Getting Started).

What the site contains

  • Getting started: a new entry page (docs/start.md) that runs the development image, makes the first requests and connects an SDK, then an Install group (development image, Docker Compose, Linux, macOS, quick start from source, full walkthrough from source).
  • Guides: using, administering, deploying, securing and upgrading a server, a new overview of the four storage backends (docs/storage-backends.md), and the event ticketing demo.
  • Reference: differences from DynamoDB, limits, the configuration reference, troubleshooting.
  • Contributing: the developer and test guide, the test strategy, local database setup notes, the storage trait and the two backend RFCs.
  • Architecture: the architecture and design guides, 13 component designs, 19 decision records, 4 RFCs.

Excluded from the site: the backlog, todo index and technical debt ledgers, templates, the design directory index, the high availability draft, demo assets and build inputs.

How it builds and publishes

.github/workflows/docs-site.yml builds the site on every pull request that touches docs/, website/, Cargo.toml or the workflow. The build fails on a broken link, a missing anchor or a Markdown parse error. A push to main publishes to GitHub Pages. The repository variable DOCS_CUSTOM_DOMAIN selects the hosting: unset builds for extenddb.github.io/extenddb/; set to docs.extenddb.org it builds for the root and writes a CNAME file.

A remark plugin removes each file's License section and NOTICE blockquote at build time; the footer carries the licence and trademark statement once. Code blocks use two Prism themes (website/src/prism/themes.ts) whose token colours are at least 4.5:1 against the block background in both modes. Search is a local index over the user-facing pages.

Content changes in docs/

Made for the site and kept in the files so GitHub readers see them too:

  • Links that pointed at files outside docs/ use the GitHub URL; three dead links fixed.
  • Product name written ExtendDB in prose and headings on user-facing pages; binary, container, file and configuration names stay lowercase.
  • Page titles equal their navigation labels; design document titles read "Component design: X"; ADR titles carry their file number; the ADR index lists 0017 and 0018 with the status their records state (Draft).
  • MongoDB setup page: server port 18443 (was 8000 in two places). Quick start: public clone URL, wait table-exists before the first write. Full walkthrough: Cassandra listed with the other backends; first requests put before delete; section 5 states how endpoint, certificate and credentials differ for the development image, Compose and a source build, and names AWS_ENDPOINT_URL_DYNAMODB.
  • Docker Compose page: a step to fetch docker-compose.yml, a table of the variables the file reads with their defaults, what docker compose ps -a shows while the server starts.
  • Admin, deployment, troubleshooting, security model and usage guide agree on the backend list, TLS being always on, the backup operations that exist and the PartiQL status. The security model gains a Development image section.
  • Internal ticket identifiers, draft markers and "last updated" lines removed from user-facing pages; dashes replaced with plain punctuation on those pages.
  • Front matter descriptions on every page that appears as a card.

Verification

  • Strict build: 71 pages, 0 broken links, 0 missing anchors, 5,298 internal hrefs checked by a crawler, 61 edit links resolve on main.
  • Every command on the home page, /start/, /dev-image/ and /local-dev-docker-compose/ run in order in a fresh directory with fresh containers; exit 0 throughout, output matching the page where the page shows output, and the table landing on the local container.
  • axe-core on the home page, /start/, /getting-started/, /manuals/usage-guide/, /local-dev-docker-compose/ and /differences-from-dynamodb/ in light and dark mode: 0 violations.
  • Each factual claim on the two new pages checked against crates/bin/Cargo.toml, crates/bin/src/main.rs, the three Dockerfiles, docker-compose.yml and the README.
  • Search for streams, TTL, IAM policy and PartiQL returns a guide first.

After merge (repository settings, not in this PR)

  1. Settings, Pages: set the source to GitHub Actions.
  2. DNS: a CNAME for docs.extenddb.org pointing at extenddb.github.io, then set the repository variable DOCS_CUSTOM_DOMAIN=docs.extenddb.org.
  3. extenddb.org: point the Documentation link and llms.txt at the new site.

Follow-ups filed separately

Merging the eight installation pages, finishing the high availability design, a configuration reference generated from extenddb.sample.toml, the image upgrade path in the upgrade manual, the dash sweep across the architecture documents, a feature status table owned by the Differences page, and aligning the 48 per-file License sections and NOTICE.md with the README's affiliation statement.

Rebase on #412

Rebased onto main at 1d0d8f4a2. Since the previous base, main gained #412, which documents the experimental Cassandra backend in getting-started.md, the architecture, design and deployment guides, the ADRs and a new docs/cassandra-setup.md. The other commits on main since then (#638, #511, #680) do not touch docs/ or website/.

Four files conflicted. In each one the text from #412 stays and this PR's formatting is applied to it: the ExtendDB spelling, links in place of file paths, and no dashes in the lines this PR changes; the em dash in the design guide's Catalog line is older than both changes and goes in #530.

docs/cassandra-setup.md from #412 is now built as a page at /cassandra-setup/. It is in the Guides sidebar after Storage backends, and the Storage backends table, the walkthrough and the deployment guide link to it. It gets a front matter description, a sentence-case title, NOTICE and LICENSE links as GitHub URLs, and colons, semicolons or parentheses in place of its dashes.

The Component designs sidebar also lists the backup and restore design (docs/design/15-backup-restore.md, from #396), which the site already published at /design/backup-restore/ with no sidebar entry.

The ADR title corrections for 0011 to 0019 are on main now, so they no longer appear in this diff.

At the rebased head, npm ci, npm run typecheck and the strict npm run build pass with no broken links or anchors, and no added prose line has an em or en dash.

CI passed all 29 checks on 34bea38a6. Publish to GitHub Pages is skipped, because it runs only when the event is not a pull request.

Add a Docusaurus 3.10 site under website/ that builds from docs/ and
publishes to GitHub Pages. The Markdown files stay where they are; the
navigation is defined in website/sidebars.ts over the existing paths,
with a two digit ordering prefix stripped from ids and URLs and four
digit ADR and RFC numbers kept.

Sections: Getting started (a new entry page, docs/start.md, that runs the
development image, makes the first requests and connects an SDK, then an
Install group: development image, Docker Compose, Linux, macOS, quick
start from source, full walkthrough from source), Guides (including a
new docs/storage-backends.md overview of the four backends), Reference
(differences, limits, a link to the configuration reference,
troubleshooting), Contributing (developer guide, test strategy, local
database setup notes, adding a backend) and Architecture (architecture
and design guides, component designs, decision records, RFCs). Project
ledgers, templates, build inputs, the design directory index and the
high availability draft are excluded from the site. A landing page
states what ExtendDB is, shows the two container starts, and links each
section. Theme tokens match extenddb.org. Search is a local index over
the user-facing pages; the Architecture section is browsed from its
sidebar.

A remark plugin removes the per-file License section and the NOTICE
blockquote at build time; the footer carries the licence and trademark
statement once. The source files are unchanged on GitHub.

Code blocks use two Prism themes defined in website/src/prism/themes.ts
whose token colours are at least 4.5:1 against the block background in
light and dark mode. Body links are underlined. Tables wrap at narrow
widths and scroll inside their own box when a word is too long.

The build fails on a broken link, a missing anchor or a Markdown parse
error, and runs as a check on every pull request touching docs/,
website/ or Cargo.toml. A push to main publishes. The repository
variable DOCS_CUSTOM_DOMAIN selects the hosting: unset builds for
extenddb.github.io/extenddb/, a domain builds for its root and writes
a CNAME file.

Content changes in docs/, made for the site and kept in the files:

- Links that pointed at files outside docs/ (LICENSE, NOTICE, README,
  CODEOWNERS, source files) use the GitHub URL. Three dead links fixed.
- Product name written ExtendDB in prose and headings on the user-facing
  pages; binary, container, file and configuration names stay lowercase.
- Page titles equal their navigation labels. Design document titles read
  "Component design: X". ADR titles carry the number of their file; the
  ADR index lists 0017 and 0018 with the status their records state.
- The MongoDB setup page gives the server port as 18443, matching every
  other page; the quick start clones the public repository URL and
  waits for the table before writing; the walkthrough names Cassandra
  with the other backends, orders the first requests put before delete,
  and states in section 5 how the endpoint, certificate and credentials
  differ for the development image, Compose and a source build.
- The Docker Compose page fetches docker-compose.yml before starting,
  lists the variables the file reads with their defaults, and says what
  `docker compose ps -a` shows while the server starts.
- Admin, deployment, troubleshooting, security model and usage guide
  pages agree on the backend list, TLS being always on, the backup
  operations that exist and the PartiQL status.
- Internal ticket identifiers, draft markers and "last updated" lines
  removed from user-facing pages; dashes replaced with plain
  punctuation on those pages.
- Front matter descriptions on every page that appears as a card, so
  the section index pages show a sentence rather than metadata.
docs/cassandra-setup.md: main added the Container Image section, the
init grants under CassandraAuthorizer, the default account's keyspace
and the keyspace replication steps. This branch added front matter, a
sentence-case title, GitHub URLs for links outside docs/ and plain
punctuation. The application role item and the replication_factor
field are main's text; the admin credentials item and the datacenter
field keep this branch's punctuation. The link to
docker/README-cassandra.md is a GitHub URL.

docs/differences-from-dynamodb.md: main rewrote the cross-account
sentence of the backup ARN row, and this branch changed the punctuation
of the TagResource row. The merge keeps main's backup ARN row and this
branch's TagResource row.

docs/dynamodb-limits.md: main updated the date line, the maximum item
size and attribute name size rows, and removed the shard iterator
lifetime item from the unenforced list. This branch retitled the page,
replaced the date line with an introduction and replaced the dashes.
The merge keeps this branch's title, main's date line, main's two rows
and list items, and this branch's punctuation in the rows and items
main did not change.

docs/manuals/02-design-guide.md: both sides changed the opening
paragraph of Caching Design. It is main's text, which describes the
auth and authz caches.

docs/manuals/03-usage-guide.md: both sides split the Backups / PITR
row. The two rows are main's; the Global Tables row is this branch's.

docs/manuals/05-admin-guide.md: both sides changed the fanout
invalidations item. It is main's text, which says the sweeps take
effect when the call returns.

docs/manuals/07-upgrade-manual.md: main replaced the Writing a New
Migration procedure with a pointer to CONTRIBUTING.md and added two
v0.1.15 entries. This branch changed the punctuation of the procedure
and the v0.1.14 heading. The merge keeps main's text, with this
branch's v0.1.14 heading and a GitHub URL for the CONTRIBUTING.md
link.

docs/manuals/10-security-model.md: main replaced the credential cache
line with the Credential and Policy Caching section, and this branch
changed the line's punctuation. The merge keeps main's section.

docs/manuals/11-deployment-guide.md: main added the login limit
sentence to the reverse proxy item, and this branch rewrote the
bind_addr, firewall and reverse proxy items. The merge keeps this
branch's bind_addr and firewall items and main's reverse proxy item.

docs/manuals/12-extending-extenddb-storage.md: main changed the
RateLimitStore item, and the SQL migrations item for the shared
runner. This branch replaced the dashes in both lists. The merge keeps
main's two items, with a GitHub URL for the CONTRIBUTING.md link, and
this branch's punctuation in the other items.

docs/troubleshooting.md: main rewrote the cause of the catalog status
entry and the fix of the uninitialized catalog entry. This branch
changed the product name in the first and turned the getting-started
path in the second into a link. The merge keeps main's text, with this
branch's link to the full walkthrough.

docs/adr/0023-catalog-migrations.md, new on main, linked CONTRIBUTING.md
by a relative path outside docs/, which the site's strict build
refuses. The link is now a GitHub URL.
docs/manuals/11-deployment-guide.md: main changed the max_connections
item of the PostgreSQL checklist to the formula that counts the data
pool, the catalog pool and the backup jobs. This branch wrote the
product name as ExtendDB in the two checklist items. The merge keeps
main's formula and this branch's spelling in the dedicated user item.

docs/troubleshooting.md: main rewrote the fix for the console login
redirect, so that it names a changed password, and added an entry for
the 503 answer when the catalog is unavailable. This branch wrote the
product name as ExtendDB in the fix line. The merge keeps main's two
entries with this branch's spelling in the fix line.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant