Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions website/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
dist/
.tanstack/
.output/
6 changes: 6 additions & 0 deletions website/.openai/hosting.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"project_id": "appgprj_6a9ba57b3a548191ba28152090a52a29",
"static": {
"directory": "dist/client"
}
}
50 changes: 50 additions & 0 deletions website/.zed/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"format_on_save": "on",
"formatter": "language_server",
"lsp": {
"typescript-language-server": {
"settings": {
"typescript": {
"preferences": {
"includePackageJsonAutoImports": "on"
}
}
}
}
},
"languages": {
"JavaScript": {
"code_actions_on_format": {
"source.fixAll.biome": true,
"source.organizeImports.biome": true
},
"formatter": {
"language_server": {
"name": "biome"
}
}
},
"TSX": {
"code_actions_on_format": {
"source.fixAll.biome": true,
"source.organizeImports.biome": true
},
"formatter": {
"language_server": {
"name": "biome"
}
}
},
"TypeScript": {
"code_actions_on_format": {
"source.fixAll.biome": true,
"source.organizeImports.biome": true
},
"formatter": {
"language_server": {
"name": "biome"
}
}
}
}
}
61 changes: 61 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Headgate landing page

Standalone TanStack Start + React website with Tailwind CSS and Motion for React.
The product console in `../ui` and the Mintlify documentation remain separate.

## Develop

```sh
pnpm install
pnpm dev
```

Open http://127.0.0.1:3100. Node 22.18+ and pnpm 9 are supported.

## Verify and build

```sh
pnpm typecheck
pnpm test
pnpm build
```

The build prerenders `/` into `dist/client/index.html`. Serve `dist/client` on a
static host; the build needs a local port for TanStack's prerender pass. No runtime
database or server-side secrets are required. A production domain has not been chosen.

## Demonstrations

The fleet diagram illustrates long-running research agents in the browser, not a live
Headgate store or model integration. It admits a cohort under the minimum of the shared
start-rate budget, concurrency ceiling, and two slots per worker. A rotating round-robin
allocation illustrates fairness and gives leftover capacity to the busy tenant.

The same agents retain their slots through six stages: planning, search, reading,
synthesis, citation checks, and saving a report. Each three-second visual tick represents
two minutes; the next cohort starts after the illustrated twelve-minute run. Changing
controls resets the scenario. These budgets concern job starts, not LLM token consumption.

The same ordered admissions color incoming packets and occupied worker slots. Filled
packets represent admitted work; outlined packets remain waiting. Large backlogs show up
to eight packets plus an explicit overflow count. Focused tests pin allocation and the
fact that agents retain their slots across stages.

The research demonstration models step replay: collected sources are skipped on retry,
interrupted synthesis is retried, and saving the report follows. It is not an exactly-once
side-effect guarantee or a live agent. Both demonstrations are explicitly labelled.
The code examples register application-defined `ResearchAgent` handlers; the application
supplies its own model and tool logic.

Diagram connectors measure their rendered source and target elements, including after
font loading, resizing, and worker-count changes. Mobile uses a vertical layout with a
reserved worker connection gutter. Workflow and step connectors share this mechanism.

Motion respects reduced-motion preferences. The fleet animation has pause and manual
advance controls. Step replay reports completed steps, rather than estimated percentages.
The feature gallery uses six HTML/CSS/Motion illustrations for shared limits, resumption,
progress, quarantine, workflows, and scheduling. They advance only while visible and stop
when the browser tab is hidden. A shared pause control and individual replay/step buttons
let visitors explore each sequence; reduced motion disables automatic advancement.
The screenshot in `public/console-workflow.jpg` comes from `../docs/assets`.
The typed-handler snippets follow the repository README and link to full SDK setup.
9 changes: 9 additions & 0 deletions website/biome.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"extends": [
"ultracite/biome/core",
"ultracite/biome/react",
"ultracite/biome/tanstack",
"ultracite/biome/vitest"
]
}
37 changes: 37 additions & 0 deletions website/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "@headgate/website",
"private": true,
"license": "Apache-2.0",
"type": "module",
"scripts": {
"build": "vite build",
"check": "ultracite check",
"dev": "vite dev --host 127.0.0.1 --port 3100",
"fix": "ultracite fix",
"preview": "vite preview --host 127.0.0.1 --port 3100",
"test": "node --experimental-strip-types --test src/lib/*.test.ts",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@fontsource-variable/inter": "^5.2.0",
"@tanstack/react-router": "^1.170.32",
"@tanstack/react-start": "^1.168.49",
"lucide-react": "^1.34.0",
"motion": "^12.0.0",
"react": "^19.2.8",
"react-dom": "^19.2.8"
},
"devDependencies": {
"@biomejs/biome": "2.5.12",
"@tailwindcss/vite": "^4.3.3",
"@types/node": "^22.19.15",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
"tailwindcss": "^4.3.3",
"typescript": "^6.0.2",
"ultracite": "7.10.8",
"vite": "^8.2.2"
},
"packageManager": "pnpm@9.15.0"
}
Loading