1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 08:29:36 +01:00

fix(frontend): pnpm dev und pnpm build ohne manuelle Vorbereitung

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)
This commit is contained in:
Sebastian Frick 2026-02-18 21:38:35 +01:00
parent 03b3b51a68
commit 3cccab1f4d
3 changed files with 187 additions and 480 deletions

View file

@ -1,143 +1,88 @@
# Effigenix Frontend
TypeScript monorepo containing Terminal User Interface (TUI) and shared packages for the Effigenix ERP system.
TypeScript-Monorepo mit Terminal UI (TUI) und geteilten Packages für das Effigenix ERP.
## Structure
## 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)
│ └── cli/ # Terminal UI (Ink/React)
└── packages/ # Shared packages (reusable for WebUI)
├── api-client/ # HTTP client for Backend API
├── types/ # TypeScript types (generated from OpenAPI)
├── validation/ # Zod schemas
└── config/ # Shared configuration
└── packages/
├── api-client/ # HTTP-Client für die Backend-API
├── types/ # TypeScript-Typen (aus openapi.json generiert)
├── validation/ # Zod-Schemas
└── config/ # Shared Configuration
```
## Prerequisites
## Packages: Internal-Packages-Pattern
- Node.js 20+
- pnpm 9+
- Backend running at http://localhost:8080
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.
## Getting Started
`pnpm build` erzeugt wie gewohnt `dist/` via tsup; für ein `npm publish` greift `publishConfig`.
### Install Dependencies
## OpenAPI-Typen aktualisieren
Die `openapi.json` ist eingecheckt und wird beim Build direkt verwendet.
Wenn sich die Backend-API ändert:
```bash
pnpm install
# 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
```
### Development
## Monorepo-Befehle
```bash
# Run TUI in dev mode
pnpm run dev
# Dependency in einem Package installieren
pnpm add axios --filter @effigenix/api-client
# Run tests
pnpm test
# Type check
pnpm run typecheck
# Lint code
pnpm run lint
# Format code
pnpm run format
```
### Build
```bash
# Build all packages
pnpm run build
```
## Package Development
### Adding a New Package
```bash
cd packages
mkdir my-package
cd my-package
pnpm init
```
Then update `package.json`:
- Set name to `@effigenix/my-package`
- Add `"main": "./dist/index.js"`
- Add `"types": "./dist/index.d.ts"`
- Add build script: `"build": "tsup src/index.ts"`
### Using Packages
```json
{
"dependencies": {
"@effigenix/types": "workspace:*",
"@effigenix/api-client": "workspace:*"
}
}
```
## Type Generation
Types are automatically generated from the backend OpenAPI spec:
```bash
# Start backend first
cd ../backend
mvn spring-boot:run
# Generate types
cd ../frontend/packages/types
pnpm run generate:types
```
## Technology Stack
- **TypeScript** - Type-safe JavaScript
- **React** - UI library (Ink for terminal)
- **pnpm** - Fast, efficient package manager
- **Zod** - Runtime validation + type inference
- **Axios** - HTTP client with interceptors
- **tsup** - Zero-config TypeScript bundler
- **vitest** - Fast unit testing
## Monorepo Commands
```bash
# Install dependencies in root
pnpm install
# Run command in specific package
# Script in einem Package ausführen
pnpm run --filter @effigenix/cli dev
# Run command in all packages
# Script in allen Packages ausführen
pnpm run --recursive build
# Add dependency to specific package
pnpm add axios --filter @effigenix/api-client
```
## Scripts
## Tech Stack
- `pnpm run build` - Build all packages
- `pnpm run dev` - Run CLI TUI in dev mode
- `pnpm test` - Run all tests
- `pnpm run typecheck` - Type check all packages
- `pnpm run lint` - Lint all code
- `pnpm run format` - Format all code
## Documentation
See individual package READMEs for detailed documentation:
- [API Client](packages/api-client/README.md)
- [Types](packages/types/README.md)
- [Validation](packages/validation/README.md)
- [Config](packages/config/README.md)
- [CLI TUI](apps/cli/README.md)
| 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 |