Skip to content

Adopt the shared desktop GUI installer (Flavian/Vespasian pattern) #140

Description

@PAMulligan

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

  1. Prerequisites: Node, pnpm, Claude Code, PostgreSQL or Docker
  2. Setup wizard: scripts/setup-project.sh with target choice (Cloudflare, Node, Lambda, Railway, Fly) and the multi-tenant flag
  3. Database: generate-migration.sh and seed-database.sh
  4. API pipeline: schema-first CRUD generation and OpenAPI-to-server
  5. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions