mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 14:19:35 +01:00
77 lines
2.4 KiB
Markdown
77 lines
2.4 KiB
Markdown
# Effigenix ERP – Terminal UI
|
||
|
||
Interaktive TUI für das Effigenix ERP-Backend. Gebaut mit [Ink](https://github.com/vadimdemedes/ink) (React für Terminal).
|
||
|
||
## Voraussetzungen
|
||
|
||
- Node.js 20+, pnpm 9+
|
||
- Backend läuft auf `http://localhost:8080`
|
||
|
||
## Starten
|
||
|
||
```bash
|
||
# 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
|
||
|
||
```bash
|
||
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).
|