Backend: - canvases table + owner-scoped CRUD under /admin/api/canvas (list/create/get/save/delete, 50 docs/user, 4MiB cap, JSON validation) Frontend: - /canvas full-screen workspace: DOM+CSS-transform infinite pan/zoom (GPU-composited world layer, viewport culling, rAF-batched pointer moves) - nodes: image (thumb display, natural-size correction), note (uncontrolled contenteditable), generation placeholder with edges - generate on canvas: prompt from panel or selected notes, selected image nodes as references, results auto-placed + bezier edges to sources - multi-canvas management, debounced autosave + keepalive flush, snapshot undo/redo (60 steps), marquee/keyboard interactions
ai-gateway frontend
Vue 3 + Vite admin console for the ai-gateway backend. This replaces the old
single-file static/admin.html.
Develop
npm install
npm run dev # http://localhost:5173
The dev server proxies /admin, /health, /generated, /v1 to the backend.
Start the backend separately:
# from repo root
python app.py # http://0.0.0.0:6060
If the backend runs elsewhere, set VITE_BACKEND before npm run dev:
VITE_BACKEND=http://192.168.1.10:6060 npm run dev
Build
npm run build # outputs static assets to ./dist
npm run preview # serve the production build locally
When hosting dist/ on a different origin than the API, set VITE_API_BASE
(e.g. VITE_API_BASE=http://api-host:6060) at build time, and add that frontend
origin to the backend's CORS_ORIGINS env var.