House Party Protocol official documentation — built with Docusaurus and hosted on GitHub Pages at docs.hpp.io.
- Live site: https://docs.hpp.io (the
hpp-io.github.io/docsURL redirects here) - Migrated from: the previous GitBook site (
hpp-io/hpp-docs)
- Node.js
>= 20(CI uses 22) - npm
npm install # install dependencies (first time only)
npm start # dev server with hot reload -> http://localhost:3000/
npm run build # production build (validates links + generates search index)
npm run serve # serve the production build -> http://localhost:3000/
npm run typecheck # TypeScript type check
npm run clear # clear the Docusaurus cacheNote
- Local search only works after
npm run build && npm run serve. The search index is generated at build time, so it is not available undernpm start.- The production site is served at the
docs.hpp.iocustom domain (baseUrl: '/').
Documentation lives in docs/. The sidebar is defined manually in sidebars.ts
to preserve the original ordering. Pages that use tabs (Getting Started) are
.mdx; all other pages are plain .md (markdown.format: 'detect').
To add or update a documentation page:
- Branch from
main:git checkout -b docs/<topic>. - Add the page under the relevant
docs/<section>/folder (e.g.docs/community/my-page.md). Use.mdfor normal content; use.mdxonly when the page needs tabs or other JSX. - Register it in
sidebars.ts: add the page id — its path underdocs/without the extension (e.g.community/my-page) — to the right category. Ordering is manual, so position it where you want it to appear. - Link to other docs by their source path (
[Token Address](../getting-started/hpp-contracts.mdx)), and put images instatic/img/, referenced as/img/<file>. - Preview with
npm start; runnpm run buildbefore pushing — the build fails on broken links (onBrokenLinks: 'throw'), so this catches mistakes early. - Open a pull request to
main. CI builds and audits it; once merged, it auto-deploys to https://docs.hpp.io.
A minimal page looks like this:
---
title: My Page
description: One-line summary (used for SEO and search).
---
# My Page
Your content here.For a tabbed page, name the file .mdx and use the theme's Tabs components:
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
<Tabs>
<TabItem value="a" label="Tab A">Content A</TabItem>
<TabItem value="b" label="Tab B">Content B</TabItem>
</Tabs>Pushing to main triggers .github/workflows/deploy.yml,
which builds the site and deploys it to GitHub Pages. Pull requests are validated by
.github/workflows/test.yml (build + security audit).
GitHub Pages must use GitHub Actions as its source (Settings → Pages → Build and deployment → Source). This can also be set via the API:
gh api repos/hpp-io/docs/pages -X POST -f build_type=workflowThe site is served at https://docs.hpp.io over HTTPS; hpp-io.github.io/docs
redirects here.
- Pinned by
static/CNAME(docs.hpp.io) andurl/baseUrl: '/'indocusaurus.config.ts, and set as the GitHub Pages custom domain. - DNS: a
CNAMErecord pointsdocs.hpp.io→hpp-io.github.io(Cloudflare, proxy off / DNS-only so GitHub can issue the TLS certificate).
Transitive advisories from the Docusaurus toolchain are pinned to patched versions
via npm overrides in package.json (including serialize-javascript, uuid,
brace-expansion, mermaid, minimatch, nanoid, fast-uri, js-yaml, postcss,
shell-quote, svgo, webpack-dev-server, body-parser, and dompurify). Most of these
packages are build-time or local-dev only and are not present in the deployed static site.
CI fails on high/critical advisories (npx audit-ci --config audit-ci.jsonc).
Advisories that have no upstream fix are allowlisted one by one in audit-ci.jsonc, each
with the reasoning recorded next to it — the gate still fails on anything not listed there.
Currently allowlisted: the two image-size parser DoS advisories
(CVE-2025-71330,
CVE-2025-71329). image-size has had
no release since 2025-04-02 and no patched version exists; Docusaurus tracks replacing it as
a breaking change targeted at v4 (#12231),
so it will not clear on the 3.x line. It is reached only through @docusaurus/mdx-loader
when measuring images at build time, never in the deployed site.
Build and deploy jobs carry a timeout-minutes bound so that an infinite-loop advisory of
this kind can cost at most one short job rather than a 6-hour runner hold.