1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 12:29:36 +01:00
effigenix/frontend/apps/cli
Sebastian Frick c26d72fbe7 feat: TUI-Screens für Inventar und Produktion + API-Client Typ-Migration
Neue TUI-Features:
- Inventar: Lageorte auflisten, anlegen, bearbeiten, (de-)aktivieren
- Produktion: Rezepte auflisten, anlegen, Detail-Ansicht
- Navigation erweitert (Hauptmenü, Routing)

API-Client auf generierte OpenAPI-Typen umgestellt:
- 6 neue Alias-Dateien in @effigenix/types (supplier, category, article,
  customer, inventory, production)
- api-client Re-Exports direkt von @effigenix/types statt via Resources
- Backend: @Schema(requiredProperties) auf 16 Response-Records
- Backend: OpenApiCustomizer für application-layer DTOs (UserDTO, RoleDTO)

Hinweis: Backend-Endpoints für GET /api/recipes und
GET /api/inventory/storage-locations/{id} fehlen noch (separate Issues).
2026-02-19 13:54:29 +01:00
..
src feat: TUI-Screens für Inventar und Produktion + API-Client Typ-Migration 2026-02-19 13:54:29 +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).