# @demeter/web

@demeter/web — part of the Oshun monorepo.

Vite-built web app. `pnpm dev` starts the dev server; `pnpm build` produces a
static bundle in `dist/`.

## Scripts

| Command                | Definition               |
| ---------------------- | ------------------------ |
| `pnpm dev`             | vite                     |
| `pnpm build`           | vite build               |
| `pnpm preview`         | vite preview             |
| `pnpm test`            | vitest run               |
| `pnpm test:watch`      | vitest                   |
| `pnpm test:coverage`   | vitest run --coverage    |
| `pnpm typecheck`       | tsc --noEmit             |
| `pnpm lint`            | eslint src/              |
| `pnpm lint:fix`        | eslint src/ --fix        |
| `pnpm clean`           | rimraf dist coverage     |
| `pnpm test:e2e`        | playwright test          |
| `pnpm test:e2e:ui`     | playwright test --ui     |
| `pnpm test:e2e:headed` | playwright test --headed |

## Layout

- `e2e/`
- `public/`
- `src/`

## Working on this package

The fastest local loop is via Nx:

```bash
pnpm nx test demeter-web
pnpm nx lint demeter-web
pnpm nx build demeter-web
```

When Nx is unhappy (usually because another worktree has duplicate project
names), bypass it with the underlying tools from this directory:

```bash
npx tsc --noEmit
npx vitest run
```

See the [root README](../../../README.md) for monorepo-wide conventions (catalog
deps, commit format, git workflow). See the
[Contributor Guide](../../../docs/CONTRIBUTING.md) for the full PR workflow.
