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:
parent
03b3b51a68
commit
3cccab1f4d
3 changed files with 187 additions and 480 deletions
|
|
@ -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 |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue