1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 10:39:35 +01:00
effigenix/shell.nix
Sebastian Frick bbe9e87c33 feat(frontend): TypeScript-Monorepo mit Terminal-UI für Effigenix ERP
Monorepo-Setup (pnpm workspaces) mit vier shared Packages und einer TUI-App:

Shared Packages:
- @effigenix/types: TypeScript-DTOs (UserDTO, RoleDTO, AuthDTO, Enums)
- @effigenix/config: API-Konfiguration und Shared Constants
- @effigenix/validation: Zod-Schemas für Username, E-Mail und Passwort
- @effigenix/api-client: axios-Client mit JWT-Handling (proaktiver + reaktiver
  Token-Refresh), AuthInterceptor, ErrorInterceptor, Resources für auth/users/roles

TUI (apps/cli, Ink 5 / React):
- Authentication: Login/Logout, Session-Restore beim Start, JWT-Refresh
- User Management: Liste, Anlage (Zod-Inline-Validation), Detailansicht,
  Passwort ändern, Sperren/Entsperren mit ConfirmDialog
- Role Management: Liste, Detailansicht, Zuweisen/Entfernen per RoleSelectList (↑↓)
- UX: SuccessDisplay (Auto-Dismiss 3 s), ConfirmDialog (J/N),
  FormInput mit Inline-Fehlern, StatusBar mit API-URL
- Layout: Fullscreen-Modus (alternate screen buffer), Header mit eingeloggtem User
- Tests: vitest + ink-testing-library (15 Tests)
2026-02-18 12:28:16 +01:00

24 lines
599 B
Nix

{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "effigenix-frontend";
buildInputs = with pkgs; [
nodejs_22
nodePackages.pnpm
# Optional: useful CLI tools during development
jq # JSON processing for manual API testing
curl # Manual HTTP requests
];
shellHook = ''
echo "Node $(node --version)"
echo "npm $(npm --version)"
echo "pnpm $(pnpm --version)"
echo ""
echo "Run 'pnpm install' to install dependencies."
echo "Run 'pnpm run build' to build all packages."
echo "Run 'pnpm run dev' to start the TUI in watch mode."
'';
}