Skip to content

Project Structure

DeLive/
├── electron/                    # Electron main process
│   ├── main.ts                  # App entry, window creation, IPC registration
│   ├── mainWindow.ts            # Main window config and security
│   ├── captionWindow.ts         # Floating caption overlay
│   ├── tray.ts                  # System tray
│   ├── shortcuts.ts             # Global keyboard shortcuts
│   ├── desktopSource.ts         # Screen/window source picker
│   ├── autoUpdater.ts           # Auto-update lifecycle
│   ├── ipcSecurity.ts           # Trusted window verification, CSP, path allowlist
│   ├── appIpc.ts                # App lifecycle IPC handlers
│   ├── captionIpc.ts            # Caption window IPC
│   ├── safeStorageIpc.ts        # Encrypted secret storage
│   ├── updaterIpc.ts            # Update IPC
│   ├── diagnosticsIpc.ts        # Diagnostics export
│   ├── apiIpc.ts                # Open API data bridge (Main ↔ Renderer)
│   ├── apiServer.ts             # REST API + WebSocket server
│   ├── apiBroadcast.ts          # WebSocket client management and broadcasting
│   ├── volcProxy.ts             # HTTP server + Volcengine WebSocket proxy
│   ├── localRuntime.ts          # whisper.cpp process management
│   ├── localRuntimeFiles.ts     # Binary/model download and import
│   ├── localRuntimeShared.ts    # Runtime configuration constants
│   ├── localRuntimeIpc.ts       # Runtime management IPC
│   └── preload.ts               # contextBridge API exposure

├── frontend/                    # React renderer app
│   ├── src/
│   │   ├── App.tsx              # Main shell, view routing, global hooks
│   │   ├── components/          # UI components
│   │   │   ├── ui/              # Primitives: Button, Badge, Switch, etc.
│   │   │   ├── settings/        # ServiceSettingsPanel, GeneralSettingsPanel
│   │   │   ├── review/          # TabBar, Tabs, MarkdownRenderer
│   │   │   ├── runtime/         # whisper.cpp runtime UI
│   │   │   ├── ApiKeyConfig.tsx  # Settings orchestrator
│   │   │   ├── TopicsView.tsx   # Topic management
│   │   │   └── ...
│   │   ├── hooks/               # Custom React hooks
│   │   │   ├── useASR.ts        # Main ASR orchestration hook
│   │   │   └── useApiIpcResponder.ts  # API bridge responder
│   │   ├── providers/           # ASR provider implementations
│   │   │   ├── registry.ts      # Provider registry singleton
│   │   │   ├── base.ts          # BaseASRProvider abstract class
│   │   │   ├── windowedBatch.ts # Windowed batch base class
│   │   │   └── implementations/ # 6 provider implementations
│   │   ├── services/            # Business logic services
│   │   │   ├── captureManager.ts    # Audio capture pipeline
│   │   │   ├── providerSession.ts   # Provider lifecycle
│   │   │   ├── captionBridge.ts     # Caption window text bridge
│   │   │   └── aiPostProcess.ts     # AI briefing, Q&A, mind map
│   │   ├── stores/              # Zustand state management
│   │   │   ├── sessionStore.ts  # Sessions, recording, AI actions
│   │   │   ├── settingsStore.ts # App settings
│   │   │   ├── uiStore.ts       # UI state, theme, language
│   │   │   ├── topicStore.ts    # Topics CRUD
│   │   │   ├── tagStore.ts      # Tags CRUD + filtering
│   │   │   └── transcriptStore.ts # Backward-compat facade
│   │   ├── utils/               # Utilities and storage
│   │   │   ├── sessionRepository.ts  # In-memory cache + IndexedDB
│   │   │   ├── sessionStorage.ts     # IndexedDB operations
│   │   │   ├── settingsStorage.ts    # Settings read/write
│   │   │   ├── backupStorage.ts      # Export/import
│   │   │   └── ...
│   │   ├── types/               # TypeScript type definitions
│   │   │   ├── index.ts         # Core app types
│   │   │   └── asr/             # ASR-specific types
│   │   ├── i18n/                # Internationalization
│   │   │   ├── index.ts         # i18n setup
│   │   │   └── locales/         # zh.ts, en.ts
│   │   └── themes.ts            # 5 color themes with light/dark tokens
│   ├── public/                  # Static assets
│   ├── vite.config.ts           # Vite build config
│   ├── vitest.config.ts         # Test config
│   ├── tailwind.config.js       # Tailwind with semantic tokens
│   └── eslint.config.js         # ESLint flat config

├── shared/                      # Shared between main and renderer
│   ├── electronApi.ts           # ElectronAPI interface + data types
│   └── volcProxyCore.ts         # Volcengine proxy protocol

├── server/                      # Standalone proxy (debug only)
│   └── src/index.ts             # Express server

├── mcp/                         # MCP server for AI agents
│   ├── delive-mcp-server.js     # Standalone stdio MCP server
│   ├── claude_desktop_config.json
│   └── package.json

├── skills/                      # Agent skill definitions
│   └── delive-transcript-analyzer/
│       └── SKILL.md

├── scripts/                     # Build and release helpers
│   ├── generate-icons.mjs       # SVG → PNG/ICO/ICNS
│   ├── fetch-whisper-runtime.mjs
│   ├── stage-whisper-runtime.mjs
│   └── generate-release-notes.mjs

├── docs/                        # VitePress documentation (this site)
├── assets/                      # README screenshots and branding
├── build/                       # Electron-builder icons
├── .github/workflows/           # CI and release pipelines
└── package.json                 # Root package with electron-builder config

Released under the Apache 2.0 License.