typescript ~6.0.3 (not 7.x): typescript-eslint 8.70 peers typescript <6.1.0, so 7.x would break lint. eslint + typescript-eslint: strict type-checked lint; @eslint/js: base rules. vitest: tests next to code; vite + @preact/preset-vite: frontend bundle; preact: UI. fastify + @fastify/static: HTTP API/SSE and serving the built UI; zod: validation at boundaries. @types/node: Node 24 typings. SQLite uses the built-in node:sqlite, so no native dependency. Layer rule domain -> app -> infra -> http/web lives in tools/layer-rules.ts and is tested. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
13 lines
387 B
TypeScript
13 lines
387 B
TypeScript
import preact from '@preact/preset-vite';
|
|
import { defineConfig } from 'vite';
|
|
|
|
// Frontend only (src/web). The server serves dist/web; in dev, Vite proxies the API to the server process.
|
|
export default defineConfig({
|
|
root: 'src/web',
|
|
plugins: [preact()],
|
|
build: { outDir: '../../dist/web', emptyOutDir: true },
|
|
server: {
|
|
proxy: { '/api': 'http://127.0.0.1:8080' },
|
|
},
|
|
});
|