Nexus docs Home

Architecture

Nexus is an Electron app with a clean main/renderer split. The renderer owns the UI; the main process owns Git, PTYs, and filesystem watching.

Main / renderer split

The renderer is a React app. Everything that touches the OS — Git, terminals, filesystem events — lives in the main process. They talk over Electron IPC.

┌─────────────────────────────┐        ┌──────────────────────────────┐
│  Renderer                   │        │  Main                        │
│  React 19 + Zustand         │        │  git (dugite)                │
│  xterm.js terminals         │  IPC   │  PTY (@lydell/node-pty)      │
│  Monaco diff viewer         │ ─────▶ │  filesystem watcher          │
│                             │        │  (@parcel/watcher)           │
│  ipcRenderer.invoke(...) ───┼────────┤  ipcMain handlers            │
└─────────────────────────────┘        └──────────────────────────────┘

The renderer never touches Git or the filesystem directly — it calls ipcRenderer.invoke and the main process does the work.

Technology stack

LayerTechnology
ShellElectron 35+
Buildelectron-vite
Packagingelectron-builder (NSIS installer)
UIReact 19 + TypeScript
StateZustand
StylingTailwind 4
Terminalsxterm.js + @lydell/node-pty
Gitdugite
FS watching@parcel/watcher
Diff editorMonaco Editor
Syntax highlightingShiki
Persistenceelectron-store

Repository layout

nexus-ide/
├── electron/    # main process: git, PTY, watcher, IPC handlers
├── src/         # renderer: React UI, Zustand stores, components
├── docs/        # project documentation
└── build/       # packaging resources

The docs site you’re reading lives separately under site/ and is a static Astro build — it is not part of the Electron app’s src/ renderer.