BUILDMENDER / DOCUMENTATION / 0.2

Website deployment & testing

Product branding: BuildMender. Existing commands and configuration retain the ci-resolve name.

BuildMender website: run, test and deploy

The product website uses dataops-platform / FlowSentra as a reference for content depth, platform exploration, operator guides and static deployment separation. It presents BuildMender's implemented CI failure resolution loop, with explicit release and validation boundaries.

The display brand is BuildMender. Existing ci-resolve package names, CLI commands, environment variables, private files, SQLite data and repair branch prefixes remain compatible. This change does not migrate runtime state or credentials.

1. What is included

There are no account, billing, contact-submission or live demo integrations on this website. The illustrated run is not connected to GitHub. Live repair requires running and configuring the application separately.

2. Run with the local application

From the project checkout:

node --version
npm start

Use Node.js 24 or newer. The normal local addresses are:

URLPurpose
http://127.0.0.1:4310/Product website
http://127.0.0.1:4310/appLocal application and investigation dashboard
http://127.0.0.1:4310/guides/run-and-test.htmlOperating guide
http://127.0.0.1:4310/guides/RUN_AND_TEST_GUIDE.mdDownloadable operating guide source

When .private/automation.json exists, starting the app also starts configured collection and workers. Website viewing alone does not configure automation or grant credentials. For a preview without live automation, follow the run and test guide.

The local server retains its loopback binding, host validation, restrictive content security policy and existing API mutation controls. Guide routes serve only explicitly registered documentation, not arbitrary files.

3. Build the standalone website

npm run website:build

The build creates website/, which is Git-ignored and regenerated from committed sources. No installation, framework bundler, GitHub credentials, model access, Docker or database is needed for this build.

The output contains:

Only reviewed website assets and registered documentation are copied. Application scripts, API handlers, .private/, .data/, dependencies and Git metadata are excluded. The public guide export replaces this checkout's absolute path with /path/to/ci-resolve.

Do not upload public/ as the standalone website. It also contains the workbench shell, which depends on the local application backend.

On the standalone website, workbench links become Run BuildMender locally links to the operating guide. No attempt is made to call the application API or open a visitor's loopback service.

The builder refuses to overwrite an existing website/ folder unless it carries the expected ownership marker. It also rejects symlinked input files. If an unrelated folder already uses that name, move it to a different location before building; do not delete it without inspecting its contents.

4. Preview the generated website

Run the build, then use a static file server. For example, if Python 3 is installed:

python3 -m http.server 4320 --bind 127.0.0.1 --directory website

Open http://127.0.0.1:4320/ and check the site. Stop the server with Ctrl+C.

This server is a local preview. It does not interpret deployment-specific _headers or _redirects, and it uses its own missing-page response. The automated static browser test supplies the intended CSP and custom 404 behavior explicitly. Configure the equivalent headers and redirects on hosts that do not understand those files.

Clipboard access requires a browser-supported secure context. The Copy button reports a fallback instruction if the browser denies clipboard access. It never claims a copy succeeded after a failed clipboard call.

5. Automated verification

npm run check
npm run test:website
npm test

npm run test:website validates:

  1. Repeatable static builds.
  2. Exclusion of app/backend/private runtime inputs.
  3. All generated local links, fragment targets and assets.
  4. Safe refusal to replace an unrelated output folder.
  5. Rejection of symlinked public input files.
  6. Escaping of raw HTML and rejection of unsafe link schemes.
  7. Strict guide-route allowlisting and workstation-path redaction.

The full suite adds local HTTP checks, all existing application and automation checks, and browser checks when configured.

To enable browser verification, use Python with Playwright and Chromium installed. Set CI_RESOLVE_BROWSER_PYTHON to that Python executable or put its absolute path in .private/browser-python; see browser setup. Browser tests explicitly skip when no interpreter is configured.

Browser coverage includes:

Screenshots are generated under ignored artifacts/, including website-desktop.png, website-mobile.png, guide-desktop.png, guide-mobile.png, static-website-desktop.png and static-website-mobile.png. Review them at readable scale after visual changes.

Passing these checks does not establish live repair-model success, production GitHub permissions, Docker runtime availability or a hosted repair service.

6. Deploy to a static host

For a Git-connected static host, use:

SettingValue
Repositoryhttps://github.com/subash-thiruppathi/BuildMender.git
Branchmain
Project rootRepository root, if this application is the repository root
FrameworkNone / static HTML
Build commandnpm run website:build
Output directorywebsite
Node version24 or newer

If the application lives inside a larger repository, set the build root to the actual application directory. For manual upload, build locally and upload the contents of website/.

Do not use npm start as a static hosting build command. The Node automation service and private state run on a separate controlled host. Do not upload application credentials to the static host.

The _headers file declares a restrictive CSP, denied framing, no content-type sniffing and disabled camera/microphone/geolocation permissions. _redirects sends old /app links to setup documentation. Host support for these configuration files varies; verify equivalent behavior on the selected host.

A new Sites registration was prepared during website work, but no deployment is claimed. Repository pushes and publication are left to the owner as requested. The authoritative website source is in this application repository; npm run website:build regenerates the deployable artifact.

7. Verify after deployment

If a host defaults to SPA fallback, configure the custom 404 behavior; this is a static documentation website, not a client-routed application.

8. Editing and maintenance

SourceResponsibility
public/index.htmlProduct content and semantic page structure
public/website.cssWebsite and guide styling; independent of app styling
public/website.jsPlatform tabs, workflow explorer, mobile menu and copy interaction
src/website.jsApproved guide registry, escaped Markdown renderer and static build
bin/build-website.jsBuild command entry point
src/server.jsLocal asset and approved-guide routes
docs/*.mdReviewed guide sources
test/website.test.jsBuild, link, renderer and exclusion checks
test/browser_flow.pyLocal website/application browser checks
test/static_website_browser.pyStandalone website browser checks

The Markdown renderer supports headings, paragraphs, code fences, lists, tables, blockquotes, bold, inline code and approved links. Raw HTML is escaped. Mermaid fences display as readable source; no third-party script is loaded to execute them. Complex Markdown extensions are not supported.

To add a guide, register its filename, HTML page name and label in websiteGuides, add a reviewed Markdown source and link it from the website. Rebuild and run link, route and browser checks. Maintain the explicit output allowlist rather than copying whole directories into the published artifact.

After changes, run the checks and static build, inspect desktop/mobile screenshots, commit with a conventional commit message, and push main when ready:

git push -u origin main

GitHub push is intentionally performed by the repository owner in this workflow.


Explore all guides ยท Back to top