Tasks 5-7: eval harness, FastAPI backend, Paper & Ink UI- src/eval/ β precision/recall/F1 harness with type-aware comparators,micro/macro F1, CSV + markdown reports, --model benchmark flag- src/api/ β FastAPI backend with /extract, /schemas, /health,request-ID middleware, typed error envelope, injectable extractor- ui/ β Vite + React + TS + Tailwind + Motion + React Three FiberPaper & Ink editorial UI with 3D paper hero, dark/light mode,confidence inkwell, wax-stamp metrics, kinetic typography- 95 passing tests (up from 54); UI is a separate npm workspace
557ab38 | import { defineConfig } from "vite"; | |
| import react from "@vitejs/plugin-react"; | |
| import path from "node:path"; | |
| export default defineConfig({ | |
| plugins: [react()], | |
| resolve: { | |
| alias: { | |
| "@": path.resolve(__dirname, "src"), | |
| }, | |
| }, | |
| server: { | |
| port: 5173, | |
| proxy: { | |
| // Proxy /api/* on the dev server to the FastAPI backend on :8000. | |
| // Keeps the frontend origin clean and side-steps CORS during dev. | |
| "/api": { | |
| target: "http://localhost:8000", | |
| changeOrigin: true, | |
| rewrite: (p) => p.replace(/^\/api/, ""), | |
| }, | |
| }, | |
| }, | |
| }); | |