mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 12:29:36 +01:00
pnpm dev: - Internal-Packages-Pattern: packages/ zeigen auf ./src/index.ts - tsx lädt TypeScript direkt, kein Build-Schritt vor pnpm dev nötig - publishConfig sichert dist/ für pnpm build und Releases pnpm build: - @effigenix/types build ruft nicht mehr generate:types auf (openapi.json ist eingecheckt, kein laufendes Backend nötig) - Veraltete Typreferenzen entfernt/korrigiert: SessionToken (nicht im Schema), RoleName/Permission (aus RoleDTO abgeleitet), ErrorResponse (als eigene Interface definiert) docs: READMEs aktualisiert – Schnellstart prominent, Stub-Modus dokumentiert, Korrekturen (Flyway→Liquibase, com.→de.effigenix)
88 lines
2.1 KiB
Markdown
88 lines
2.1 KiB
Markdown
# 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 |
|