# 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 |