# Effigenix Frontend

TypeScript-Monorepo mit Terminal UI (TUI) und geteilten Packages für das Effigenix ERP.

## Schnellstart

```bash
pnpm install
pnpm dev      # startet direkt, kein separater Build-Schritt nötig
```

Das Backend muss unter http://localhost:8080 erreichbar sein.

## Build

```bash
pnpm build    # baut alle Packages nach dist/
```

## Weitere Scripts

```bash
pnpm test           # Tests aller Packages
pnpm run typecheck  # TypeScript-Check aller Packages
pnpm run lint       # ESLint
pnpm run format     # Prettier
```

---

## Struktur

```
frontend/
├── apps/
│   └── cli/              # Terminal UI (Ink/React)
│
└── packages/
    ├── api-client/       # HTTP-Client für die Backend-API
    ├── types/            # TypeScript-Typen (aus openapi.json generiert)
    ├── validation/       # Zod-Schemas
    └── config/           # Shared Configuration
```

## Packages: Internal-Packages-Pattern

Die `packages/`-Libraries zeigen in `main`/`exports` auf ihre TypeScript-Quellen (`./src/index.ts`).
`tsx` lädt sie daher direkt – kein Build-Schritt vor `pnpm dev` nötig.

`pnpm build` erzeugt wie gewohnt `dist/` via tsup; für ein `npm publish` greift `publishConfig`.

## OpenAPI-Typen aktualisieren

Die `openapi.json` ist eingecheckt und wird beim Build direkt verwendet.
Wenn sich die Backend-API ändert:

```bash
# Backend lokal starten, dann:
cd packages/types
pnpm run generate:spec    # holt openapi.json vom laufenden Backend
pnpm run generate:types   # generiert src/generated/api.ts daraus
# Ergebnis committen
```

## Monorepo-Befehle

```bash
# Dependency in einem Package installieren
pnpm add axios --filter @effigenix/api-client

# Script in einem Package ausführen
pnpm run --filter @effigenix/cli dev

# Script in allen Packages ausführen
pnpm run --recursive build
```

## Tech Stack

| Tool | Zweck |
|------|-------|
| TypeScript | Typsichere Entwicklung |
| React + Ink | Terminal UI |
| pnpm Workspaces | Monorepo-Verwaltung |
| tsup | Zero-config TS-Bundler |
| Zod | Runtime-Validierung |
| Axios | HTTP-Client |
| vitest | Unit Tests |
