Public website

apps/website is the public Stream Pulse website: features, screenshots, pricing and FAQ. It is a React page that a small Node.js server renders up front, so it is readable without JavaScript and indexable by search engines. The browser bundle then makes it interactive (screenshot tabs, mobile menu).

Control board featured on the website

The site uses the app’s brand palette (navy background, cyan and blue accents, yellow highlights) and the Stream Pulse logo. Marketing copy, the feature list, plans and FAQ live in apps/website/src/content.ts.

The website is hosted at https://stream-pulse.cloud and links to https://docs.stream-pulse.cloud. The documentation container uses the same brand styling and runs alongside the website on proxy-tier.

Pricing

StreamPulse Pro pricing is not final, so the Pro plan shows Coming soon with no price, and a notice explains that nothing can be purchased yet. Update plans, pricingNotice and purchaseChannels in content.ts when pricing is announced. See StreamPulse Pro for what Pro unlocks.

Screenshots

The screenshots in docs/assets/images/website/ come from the standalone simulator with synthetic configuration (no real accounts or credentials). The build copies them into the site under images/. To add one, save the PNG there and add an entry to screenshots in content.ts. A test fails if a referenced screenshot is missing.

Rules Event Lab
Rules Event Lab

Run and build

Goal Command
Develop with hot reload pnpm dev:website (http://127.0.0.1:5180)
Production build pnpm build:website (writes dist/website)
Serve the production build pnpm start:website (http://127.0.0.1:8080)
Container image task website:docker IMAGE=stream-pulse-website:local

The server reads PORT (default 8080) and HOST (default 127.0.0.1; the container uses 0.0.0.0). It loads the built files into memory at startup and serves only those, answers GET/HEAD only, exposes /healthz and /robots.txt, and sends a strict Content Security Policy with no inline scripts or styles.

Container image

task website:docker IMAGE=stream-pulse-website:local
# or: docker build -f apps/website/Dockerfile -t stream-pulse-website:local .
docker run --rm -p 8080:8080 stream-pulse-website:local

Build from the repository root. The image runs as the non-root node user on port 8080 with a /healthz health check. The Website image GitHub workflow builds it for pull requests and publishes ghcr.io/<owner>/stream-pulse-website (latest and the commit SHA) from main. Like the gateway image, it ships with BuildKit provenance and an SBOM attached to the image index. Inspect its provenance with:

docker buildx imagetools inspect ghcr.io/<owner>/stream-pulse-website:latest --format ''