f7ec083a1d
Progressive disclosure: root + 6 nested AGENTS.md for specs, firmware, hardware, tools, test, web.
YiACAD Web
This directory hosts the web-facing YiACAD scaffold:
app/provides the Next.js frontend and GraphQL route handler.components/holds the Excalidraw canvas, KiCanvas viewer shell, project tree, and realtime status cards.project/is the Git-tracked source-of-truth for.excalidrawdiagrams and local KiCad inputs.realtime/server.mjslaunches the separate Yjs websocket server with persistence.
Product routes:
/project dashboard/diagramExcalidraw editor/pcbKiCanvas viewer lane/reviewPR review surface
Key commands:
npm installnpm run devnpm run dev:realtimenpm run worker:edanpm run vendor:kicanvas
The current realtime layer exposes a Yjs room and transport status. Binding Excalidraw scene data into the CRDT document is intentionally left as the next incremental lot.
AI / intelligence overlay:
- keep Git as the source of truth
- keep Yjs as collaboration transport only
- keep workers as the execution boundary
- introduce review assist only as a read-only overlay once Git/CI/artifact read models are real
Queue and workers:
- GraphQL enqueues EDA jobs through Redis-backed
BullMQ npm run worker:edaconsumes the queue and calls existing repo tools- worker heartbeat is published to
web/project/.ci/worker-health.json kicad-headlessusestools/cad/yiacad_backend_client.pyinservice-firstmodekibotnow routes throughtools/cad/yiacad_backend_client.pyand emits a normalized YiACAD manufacturing packagekiauto-checksnow routes throughtools/cad/yiacad_backend_client.pyand emits normalized YiACAD validation output
Ops probes:
GET /api/ops/platformexposesnext-js,yjs-realtime,eda-queue, andeda-workerGET /api/ops/queuedistinguishesREDIS_URLmisconfiguration from Redis reachability failuresGET /api/ops/workerreports worker heartbeat, last job, and stale or absent worker state
Environment:
- copy values from
.env.example REDIS_URLis required for the queue/worker pathKIBOT_CONFIGis optional until a real KiBot recipe is added to the project