Skip to content

About

The official Sendra website, documentation, and changelog, powered by the Sendra project.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

sendra-web

The public website for Sendra, a terminal-native HTTP client, a "CLI Postman" written in Rust. This repo holds the marketing/landing site and documentation, built with Docusaurus; it does not contain any of the Sendra CLI's source code, which lives in the main sendra repo.

This is currently a bare Docusaurus scaffold — landing page content and blog content are added in later issues. The reference docs, however, are real: they're synced in from the sendra repo's own docs/ directory (see Docs sync below).

Requirements

  • Node.js (see .nvmrc for the pinned version)
  • pnpm

Local development

# install dependencies
pnpm install

# pull the latest reference docs from sendra (see "Docs sync" below) —
# required once before the first `pnpm start`/`pnpm build`, since
# docs/cli/ is generated and gitignored
pnpm sync-docs

# start the local dev server (http://localhost:3000)
pnpm start

# build the static production site into ./build
pnpm build

# serve the production build locally
pnpm serve

Contributing

main is protected; branch from dev and open pull requests against dev, not main. See CONTRIBUTING.md for the full workflow.

Docs sync

docs/cli/ is not hand-written — it's generated by scripts/sync-docs.ts (pnpm sync-docs), which pulls docs/reference.md, docs/reference/*.md and docs/decisions/*.md from the sendra repo, adds the Docusaurus front matter they don't carry (id, title, sidebar_position, the last derived from the order sendra's own docs/reference.md/docs/decisions/README.md list their topics in), and rewrites their internal links into Docusaurus doc routes (or, for links that point outside docs/ — source files, CONTRIBUTING.md, the root README.md — into github.com links at the synced commit, since that content isn't pulled in).

It's scoped entirely to docs/cli/, which it wipes and regenerates on every run, so it never touches hand-written docs living elsewhere under docs/ (e.g. docs/intro.md), and re-running it never leaves stale files behind from a previous sync.

Live tracking: the sync resolves sendra's main branch HEAD via the GitHub API at the start of every run — there's no pinned commit SHA to bump. This is deliberate: a notify-docs-site workflow in the sendra repo POSTs to this site's Vercel deploy hook on every push to sendra's main that touches docs/, with no review step in between, so the sync needs to pick up whatever just landed on main rather than re-syncing a stale pin. The tradeoff is that an unrelated-looking sendra main push can change or break a sendra-web build if it touches docs/ or the sync's assumptions about doc structure — there's no reviewed pin standing between the two repos anymore. SENDRA_DOCS_REF overrides the ref (a branch, tag, or commit) for local testing without editing the file.

CI (.github/workflows/ci.yml) runs pnpm sync-docs and pnpm build on every push/PR, so a sendra-side docs change that breaks the transform, or a build error caused by newly-synced content, fails visibly on the PR — though because the ref is resolved live, a CI run against this same commit can still diverge from what shipped at deploy time if sendra's main moved in between. The sync reads the public sendra repo over the GitHub API unauthenticated by default; set the SENDRA_DOCS_TOKEN repo secret (a fine-grained PAT with read-only access to sendra-lab/Sendra) if syncs start hitting GitHub's unauthenticated rate limit.

Versioning: this site is still deliberately unversioned — a single "current" doc set, Docusaurus's default with no versions config at all. Sendra has cut its first tagged release (v0.1.0), so there's now a real release boundary to version against, but scripts/sync-docs.ts still tracks sendra's live main HEAD rather than that tag (see "Live tracking" above), so docs/cli/ reflects the latest unreleased docs, not the v0.1.0 snapshot. Turning on docusaurus docs:version is meaningful now, but it's a bigger change than the sync alone: it'd mean deciding whether the sync should move from tracking main to tracking the latest tag, and whether every future sendra release gets its own versioned snapshot here. Revisit deliberately rather than as a side effect of another change.

About

The official Sendra website, documentation, and changelog, powered by the Sendra project.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages