import path from 'node:path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import tailwindcss from '@tailwindcss/vite';

// Vite config for the React client.
//
// Build output → ../public/app/   so Express can serve it as a static
// bundle. While migration is in-flight, the old vanilla JS still lives
// at /, and the React tree answers /app/*.
//
// Dev server proxies /api to the backend running on localhost:3000
// (or wherever the backend is) so React dev works against real data.
//
// @shared alias resolves to the repo-root shared/ directory — the
// typed wire-protocol + Zod schemas imported by server and client alike.
export default defineConfig({
  plugins: [react(), tailwindcss()],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      '@shared': path.resolve(__dirname, '../shared'),
    },
  },
  server: {
    proxy: {
      '/api': { target: 'http://localhost:3000', changeOrigin: true },
    },
  },
  build: {
    outDir: path.resolve(__dirname, '../public/app'),
    emptyOutDir: true,
    assetsDir: 'assets',
  },
  base: '/app/',
});
