- Remove src/data/synthetic.ts + its test (AR refund, HCM onboarding, GL close, Service Ops blueprints were hand-modelled fakes). - Remove DataMode='snapshot'; the store now boots straight into live EA2 with no fallback. EA2 errors surface as toasts, not fake data. - Topbar / Settings / CommandBar wording: 'SNAPSHOT'/'LIVE' becomes the unambiguous 'EA2' badge. No more user-facing mode switch. - package.json name flowmaster-mission-control-demo → flowmaster-canvas. - README rewritten — no longer calls the product a demo. - store.test: drop the two tests that relied on synthetic scenarios always being present; add one asserting an EA2-empty response leaves the store cleanly empty (no error-stuck state). All 23 vitest tests pass. tsc + vite build green. Bundle dropped from ~238 kB gz → ~234 kB gz.
2.1 KiB
2.1 KiB
FlowMaster — Canvas
Live at https://canvas.flow-master.ai · operations cockpit for every process the company runs.
Canvas is the FlowMaster operator surface. Industrial-blueprint doctrine: paper canvas, navy frame, amber accent, 1px hairlines, square edges, monospace operational density. People, Finance, Procurement, and IT in one frame.
What it is
- React 19 single-page app (Vite + ReactFlow + cmdk + framer-motion + zustand + dagre).
- Connected directly to EA2 in the browser via the API client at
src/lib/api.ts. There is one data source: live EA2. No bundled snapshot, no synthetic blueprints. - Scenes: Landing, Mission Control, Run History, Process Studio, Hubs, Agent, Settings, Login, SSO callback.
- Agent scene has a chat surface with per-tenant local memory (
src/lib/agentMemory.ts) and three intents: navigate, retain a fact, start a process draft. - Hubs surface departmental lenses (People, Finance, Procurement, IT).
- Three view-as personas (CEO, Head of People, Head of IT) re-sign in under the persona's email so the operator UI reflects the seat.
Run, test, build
pnpm install
# dev (with backend proxy for live mode)
pnpm dev # → http://127.0.0.1:5173
# tests
pnpm test # vitest
# build
pnpm build # tsc + vite, single chunk ~234 KB gz
Deploy
Deployment is tracked in FM06/flowmaster-ops, overlay
manifests/overlays/demo/:
mc-deployment.yaml— replicated nginx Deploymentmc-service.yaml— ClusterIP service on port 80mc-ingress.yaml— Traefik ingress atcanvas.flow-master.aiwith cert-manager DNS-01 cert
nginx in the image reverse-proxies /api/* to https://demo.flow-master.ai
so the SPA is same-origin (no CORS).
pnpm build
docker buildx build --platform linux/amd64 \
-f Dockerfile.runtime \
-t gitea.flow-master.ai/shad/mission-control-demo:sha-<git> \
--load .
docker push gitea.flow-master.ai/shad/mission-control-demo:sha-<git>
# Then bump the image pin in manifests/overlays/demo/mc-deployment.yaml.