# Local Dev Server (Vite)

Start: `npx vite --host 0.0.0.0 --port 5173`

## vite.config.ts requirements

### 1. Proxy rewrite (critical)
Vite's proxy prefix stripping is unreliable. Always explicit:
```ts
### 1. Proxy rewrites

```
'/pb': {
  target: 'http://127.0.0.1:8091',
  changeOrigin: true,
  rewrite: (path) => path.replace(/^\/pb/, ''),
},
'/deepseek': {
  target: 'https://localhost',
  changeOrigin: true,
  secure: false,  // localhost self-signed cert
  rewrite: (path) => path.replace(/^\/deepseek/, '/deepseek'),
},
```

**Important:** The `/deepseek` proxy MUST route through the local nginx server (`localhost:443`), NOT directly to Ollama or api.deepseek.com. The nginx config adds the `Authorization` header with the DeepSeek API key. Without routing through nginx, AI calls will fail with authentication errors in dev mode.
```

### 2. PocketBase SDK `import` keyword error
pb SDK v0.27.0 uses `import` as a class method name at line ~28540:
`async import(e, t = !1, s)`

Vite's esbuild pre-bundler leaves `import` as-is. Browsers reject it as syntax error.

**Two-part fix:**
1. vite.config.ts: `optimizeDeps: { exclude: ['pocketbase'] }`
2. Patch source: `sed -i 's/async import(/async _import(/g' node_modules/pocketbase/dist/pocketbase.es.mjs`
3. Clear cache: `rm -rf node_modules/.vite`

## PocketBase Admin (v0.39.x)

- Superuser auth: `POST /api/collections/_superusers/auth-with-password` (NOT `/api/admins/...`)
- Create superuser: `docker exec pocketbase /usr/local/bin/pocketbase superuser create <email> <pass> --dir /pb_data`
- Create collections via superuser token from auth endpoint
