1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 11:59:35 +01:00
effigenix/frontend/apps/cli
Sebastian Frick 6c1e6c24bc feat(production): articleId für Rezepte, TUI-Verbesserungen mit UoM-Carousel, ArticlePicker und Zutaten-Reorder
Backend:
- articleId als Pflichtfeld im Recipe-Aggregate (Domain, Application, Infrastructure)
- Liquibase-Migration 015 mit defaultValue für bestehende Daten
- Alle Tests angepasst (Unit, Integration)

Frontend:
- UoM-Carousel-Selektor in RecipeCreateScreen, AddBatchScreen, AddIngredientScreen
- ArticlePicker-Komponente mit Typeahead-Suche für Artikelauswahl
- Auto-Position bei Zutatenzugabe (kein manuelles Feld mehr)
- Automatische subRecipeId-Erkennung bei Artikelauswahl
- Zutaten-Reorder per Drag im RecipeDetailScreen (Remove + Re-Add)
- Artikelnamen statt UUIDs in der Rezept-Detailansicht
- Navigation-Context: replace()-Methode ergänzt
2026-02-20 01:15:34 +01:00
..
src feat(production): articleId für Rezepte, TUI-Verbesserungen mit UoM-Carousel, ArticlePicker und Zutaten-Reorder 2026-02-20 01:15:34 +01:00
package.json feat(frontend): TypeScript-Monorepo mit Terminal-UI für Effigenix ERP 2026-02-18 12:28:16 +01:00
README.md docs(cli): remove implementation plan, add TUI user+dev guide 2026-02-18 12:28:28 +01:00
tsconfig.json feat(frontend): TypeScript-Monorepo mit Terminal-UI für Effigenix ERP 2026-02-18 12:28:16 +01:00
vitest.config.ts feat(frontend): TypeScript-Monorepo mit Terminal-UI für Effigenix ERP 2026-02-18 12:28:16 +01:00

Effigenix ERP Terminal UI

Interaktive TUI für das Effigenix ERP-Backend. Gebaut mit Ink (React für Terminal).

Voraussetzungen

  • Node.js 20+, pnpm 9+
  • Backend läuft auf http://localhost:8080

Starten

# Im frontend/-Verzeichnis
pnpm install
pnpm --filter @effigenix/cli dev

Bedienung

Navigation: ↑↓ bewegen, Enter auswählen/bestätigen, Escape/Backspace zurück.

Login

Benutzername und Passwort eingeben, Tab zum Feldwechsel, Enter auf dem letzten Feld. Die Session wird in ~/.effigenix/config.json gespeichert und beim nächsten Start wiederhergestellt.

Hauptmenü

Eintrag Funktion
Benutzerverwaltung Liste, Anlage, Details, Passwort
Rollenverwaltung Liste, Details
Logout Session beenden

Benutzerverwaltung

  • Liste: ↑↓ navigieren, Enter → Detailansicht
  • Anlegen: Formular mit Tab-Navigation; Felder werden per Zod validiert (Inline-Fehler)
  • Detailansicht → Aktionen:
    • Sperren/Entsperren Bestätigungsdialog (J/N)
    • Rolle zuweisen/entfernen interaktive Auswahlliste der verfügbaren Rollen
    • Passwort ändern eigener Screen mit Passwort-Bestätigung
  • Erfolgreiche Aktionen zeigen eine grüne Box (auto-dismiss nach 3 s)

Rollenverwaltung

Liste aller Rollen mit Berechtigungen; Readonly-Ansicht.


Entwicklung

pnpm --filter @effigenix/cli typecheck   # TypeScript-Check
pnpm --filter @effigenix/cli test        # vitest (15 Tests)
pnpm --filter @effigenix/cli build       # tsup → dist/

Struktur

src/
├── components/
│   ├── auth/        # LoginScreen
│   ├── layout/      # MainLayout, Header, StatusBar
│   ├── roles/       # RoleListScreen, RoleDetailScreen, RoleSelectList
│   ├── shared/      # ErrorDisplay, SuccessDisplay, ConfirmDialog, FormInput, LoadingSpinner
│   └── users/       # UserListScreen, UserDetailScreen, UserCreateScreen, ChangePasswordScreen
├── hooks/           # useUsers, useRoles, useTerminalSize
├── state/           # auth-context, navigation-context
└── utils/           # api-client, token-storage

Token-Speicherung

~/.effigenix/config.json (chmod 600). Enthält Access-Token, Refresh-Token und Ablaufzeit. Token-Refresh erfolgt proaktiv (< 5 min bis Ablauf) und reaktiv (bei 401).