This file provides guidance to WARP (warp.dev) when working with code in this repository.
npm start- Start the Electron application in development mode with hot reloadnpm run build- Build the application for productionnpm run package- Build and package the app using electron-buildernpm run dist- Build platform-specific installers/packagesnpm run dist:mac- Build macOS-specific packages (DMG, ZIP)npm run dist:linux- Build Linux-specific packages (DEB, RPM, AppImage)npm run dist:win- Build Windows-specific packages (NSIS, Portable)npm run publish- Build and publish to configured distribution channels
npm run dev- Start development with file watchingnpm run build:main- Build main process onlynpm run build:preload- Build preload script onlynpm run build:renderer- Build renderer process only
npm test- Run Jest tests (located intests/directory)npm test -- tests/components/editor/utils/VirtualFS.test.js- Run a single test file
The application includes a CLI for plugin development:
fdo compile <path>- Compile a plugin at the given path using esbuildfdo deploy <path>- Compile, sign, and deploy a pluginfdo deploy <path> --label <cert_label>- Deploy using a specific certificate
Note: Linting is not currently configured (npm run lint returns "No linting configured")
FDO is an Electron-based desktop application with a React frontend that implements a secure, plugin-driven DevOps platform. The architecture follows Electron's main/renderer process model:
- Plugin Management: Loads and manages plugins using
PluginManagerwith isolatedutilityProcessinstances - Security: Certificate-based plugin signing and verification system via
Certsutility - CLI Integration: Built-in CLI commands for plugin development and deployment
- IPC Handlers: Manages communication between main and renderer processes through structured channels
- React App (
src/App.jsx): Hash router with three main routes:/- Main dashboard (Home.jsx)/editor- Code editor interface (EditorPage.jsx)/live-ui- Live UI components (LiveUI.jsx)
The core value proposition of FDO is its modular plugin architecture:
- Installation: Plugins installed to
~/.config/FDO/plugins/(or OS equivalent) - Compilation: TypeScript/JavaScript plugins compiled using esbuild with virtual filesystem
- Signing: Cryptographic signing using certificates stored in app data
- Loading: Plugins run in isolated utility processes for security
- Communication: IPC-based messaging between plugins and main application
- Certificate System: Root CA and plugin-specific certificates for signing/verification
- Process Isolation: Each plugin runs in separate utility process
- Signature Verification: All plugins verified before loading
Structured channel system with prefixed namespaces:
NotificationChannels- App notification systemPluginChannels- Plugin lifecycle and communicationSettingsChannels- Application settings (certificates, etc.)SystemChannels- System-level operations
- Blueprint.js - Primary UI component library
- Monaco Editor - Code editing capabilities
- React Flow - Visual workflow/diagram support
- React Router - Client-side routing
- esbuild - Fast plugin compilation with virtual filesystem support
- webpack - Main application bundling via Electron Forge
- Virtual Filesystem - In-memory file system for plugin development
- electron-store - Settings and configuration persistence
- JSONORM - Simple JSON-based ORM for data management
- UserORM / PluginORM - Specialized ORMs for user and plugin data
- Plugins:
app.getPath('userData')/plugins/ - Configuration:
app.getPath('userData')/config.json - Plugin Registry:
app.getPath('userData')/plugins.json
- Electron Builder for packaging and distribution
- Webpack for bundling main process, preload script, and renderer process
- Multi-platform builds: macOS (DMG, ZIP), Linux (DEB, RPM, AppImage), Windows (NSIS, Portable)
- Asset handling: Icons, CSS, and static assets copied to dist/renderer/assets
- Development: Concurrent building with file watching and hot reload
- Build outputs:
dist/main/(main process),dist/renderer/(UI assets)
- ASAR packaging with asset validation
- Certificate-based signing for plugin integrity
- Process isolation for plugin execution
- Content Security Policy configured for development
The architecture enables extending core DevOps functionality through secure, isolated plugins while maintaining a unified desktop interface for automation, deployment, monitoring, and workflow customization.