Two-pane selector/sorter over a virtual 1,000,000-element ID universe.
- Backend: Express + TypeScript (in-memory state, no DB). Dedup+batch queue: mutations/reads flush every 1s, custom-adds every 10s.
- Frontend: React + TypeScript + Vite. Left pane virtualized (react-window), right pane drag-and-drop sortable (dnd-kit). Filter, infinite scroll (pages of 20), persisted selection + order.
npm install
npm run dev:server # :3000 (terminal A)
npm run dev:web # :5173, proxies /api -> :3000 (terminal B)npm run build
npm start # serves API + static on :3000npm testDocker container bound to loopback, behind host Caddy on the test box.
HOST_PORT=3900 docker compose up -d --build