Developer Documentation
Notely is built with Electron, React, and Vite.
1. Core Architecture & Process Model
- Main Process (
electron/main.cjs): Handles window lifecycle, file I/O, IPC handler registration, menu creation, and system integrations. - Background Utility Process (
workerManager.cjs/workerProcess.cjs): Spawns an isolated Node.jsUtilityProcessfor asynchronous vector embedding generation and Knowledge Graph indexing. This keeps background indexing CPU spikes off the main thread. - Preload Bridge (
electron/preload.cjs): Exposes safe, validated IPC invocation methods towindow.electronAPI. - Renderer Process (
src/): React 18 frontend with Vite, CodeMirror 6 editor canvas, KaTeX rendering, and Lucide icons.
2. IPC Channel Security Guard Pattern
All ipcMain.handle endpoints MUST enforce IPC security guards and payload validation:
- Sender Authentication (
assertTrustedIpcSender): Enforces that IPC invocation events originate strictly from verified internal application renderer windows, rejecting unauthorized external or injected frame messages:javascriptconst { assertTrustedIpcSender } = require("./ipcSecurity.cjs"); ipcMain.handle("myChannel", async (event, rawPayload) => { assertTrustedIpcSender(BrowserWindow, event, "myChannel"); // ... }); - Payload Schema Validation (
ipcSchemas.cjs): Validate raw payloads against strict schema contracts (validatePayload) to ensure type safety before processing file paths or commands.
3. Development Workflow & Commands
Development Server
bash
npm run devLaunches Vite HMR server and Electron wrapper simultaneously.
Build Production Bundle
bash
npm run buildCompiles Vite frontend assets and validates CommonJS Electron main scripts.
Documentation Site
bash
npm run docs:dev # Launch VitePress live preview server
npm run docs:build # Build static production docs site4. Test Suite Execution
Notely uses Vitest for comprehensive unit, integration, and IPC service testing:
bash
# Run all unit and integration tests
npm test
# Run tests in watch mode
npm run test:watch
# Run P2P network integration test harness
npm run test:p2pKey Test Directories
tests/ai/: Core AI orchestration, 5-stageAIFlow, 4-layer planning, compaction, and facade integrity tests.tests/golden_workspace.test.js: Workspace creation, note CRUD, task database sync, and file watcher tests.electron/lib/ipc/codeExecutorIpc.test.js: Code execution runner tests.electron/p2p/p2pLive.test.js: Peer-to-peer discovery and encrypted handshake tests.
5. Build & Packaging Scripts
For generating standalone distribution packages:
- Windows Executable Build Script (
build-windows-exe.sh): Compiles and bundles a standalone Windows executable. - Release Packaging Script (
release.sh): Automates version stamping, package archive creation, and release checksum generation. - Icon Generation (
scripts/generate-icon.cjs): Generates app icons from source image assets (process.env.NOTELY_ICON_SOURCE).