# Chartsmith web product

This is the judge-facing Chartsmith surface built in Milestone 3 and populated
with the completed ten-example Milestone 4 portfolio.

It is deliberately split into two runtimes:

- this vinext application presents immediate accepted examples and the complete
  user experience;
- `scripts/chartsmith_web.py` runs the local upload/job API around the promoted
  Python/Codex workflow.

The browser never reimplements chart reconstruction or release decisions.
Every live status and intermediate result is projected from a validated workflow
artifact.

## Local product

From the repository root, use the same verified command shown in the public
local-edition panel:

For a first-time user, [`START_HERE.md`](../../START_HERE.md) contains the
complete requirements, success state, stop instructions, and troubleshooting.

```powershell
python scripts\setup_and_start.py
```

Then open `http://localhost:3000/`.

The setup and starter:

1. verifies the local-edition files and ten prebuilt example journeys;
2. creates an isolated Python environment and installs requirements when needed;
3. resolves the current supported Codex executable and checks sign-in;
4. starts the local durable job API on port 8765;
5. starts this web application on port 3000.

## Web-only validation

```powershell
cd app\web
npm ci
npm test
```

The web-only build always supports immediate example exploration. A genuine
upload requires the local Chartsmith API and promoted workflow.

## Hosting boundary

The Sites project registered in `.openai/hosting.json` is deployed publicly at
<https://chartsmith-build-week.sseo.chatgpt.site>. The hosted **Local edition**
section is a truthful handoff: when the genuine engine is unavailable it
contains no upload control, explains the one-command setup and requirements,
points to the ten completed journeys, and provides the complete source bundle.

The local product stores live job state and uploads in the repository's ignored
`runs/build_week/` area because the promoted workflow is a long-running local
Python/Codex process. Starting the local engine activates the genuine uploader.
Any future hosted upload path must first select durable job infrastructure and
model credentials; it must never present a simulated redesign as a live run.
