Goal
Flavian and Vespasian ship a cross-platform desktop GUI that wraps their CLI workflows so a less-technical user never touches a terminal. Nerva should adopt the same interface so all the sibling frameworks install and run the same way.
The pattern to reuse
See Flavian's docs/GUI.md (built under Flavian epic #100) and Vespasian's docs/GUI.md:
- Electron + TypeScript + React via electron-vite, packaged with electron-builder
- Lives as a workspace package at packages/gui/
- Thin orchestration layer only: it invokes the repo's existing scripts and Claude Code, never reimplements pipeline logic
- Hard layering (shared / core / main / preload / renderer) with a typed IPC bridge; the renderer can only call named, typed operations
- ProcessRunner streams script output as structured events, with a cross-platform shell resolver for .sh scripts
Proposed screens for Nerva
- Prerequisites: Node, pnpm, Claude Code, PostgreSQL or Docker
- Setup wizard: scripts/setup-project.sh with target choice (Cloudflare, Node, Lambda, Railway, Fly) and the multi-tenant flag
- Database: generate-migration.sh and seed-database.sh
- API pipeline: schema-first CRUD generation and OpenAPI-to-server
- Testing: run-tests.sh, security-scan.sh, load-test.sh
Acceptance
- pnpm gui:dev launches the app; pnpm gui:package builds an installer
- Each screen drives the existing scripts unchanged
- README gains the same "Desktop GUI (experimental)" section Flavian and Vespasian have
Goal
Flavian and Vespasian ship a cross-platform desktop GUI that wraps their CLI workflows so a less-technical user never touches a terminal. Nerva should adopt the same interface so all the sibling frameworks install and run the same way.
The pattern to reuse
See Flavian's docs/GUI.md (built under Flavian epic #100) and Vespasian's docs/GUI.md:
Proposed screens for Nerva
Acceptance