# @oshun/admin

@oshun/admin — part of the Oshun monorepo.

Next.js application. `pnpm dev` runs the dev server; `pnpm build && pnpm start`
runs the production server.

## Scripts

| Command                   | Definition                                                    |
| ------------------------- | ------------------------------------------------------------- |
| `pnpm dev`                | next dev --webpack -p 3020                                    |
| `pnpm build`              | next build --webpack                                          |
| `pnpm start`              | next start -p 3020                                            |
| `pnpm lint`               | eslint src                                                    |
| `pnpm typecheck`          | tsc --noEmit                                                  |
| `pnpm test`               | vitest run --passWithNoTests                                  |
| `pnpm e2e`                | playwright test                                               |
| `pnpm e2e:headed`         | playwright test --headed                                      |
| `pnpm lighthouse`         | pnpm lighthouse:collect && pnpm lighthouse:assert             |
| `pnpm lighthouse:collect` | pnpm dlx @lhci/cli@0.14.0 collect --config=./lighthouserc.cjs |
| `pnpm lighthouse:assert`  | pnpm dlx @lhci/cli@0.14.0 assert --config=./lighthouserc.cjs  |
| `pnpm lighthouse:upload`  | pnpm dlx @lhci/cli@0.14.0 upload --config=./lighthouserc.cjs  |

## Layout

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

## Working on this package

The fastest local loop is via Nx:

```bash
pnpm nx test oshun-admin
pnpm nx lint oshun-admin
pnpm nx build oshun-admin
```

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.
