dripnex.docs
Architecture

Architecture Overview

Clean architecture with strict separation of concerns — monorepo structure, package dependencies, and data flow

Architecture Overview

Dripnex is a desktop-first note app. The marketing site is a separate surface. Sync is optional and end-to-end encrypted.

Monorepo Structure

+ ai-core, mcp-server, plugin-cli, …

The product is apps/desktop. apps/web does not read notes. packages/api never sees plaintext markdown.

Key Boundaries

Data Flow

Renderer (React + TanStack Query + Zustand)
    ↓ window.dripnex.*
Preload (contextIsolation)
    ↓ ipcRenderer.invoke (Zod at the boundary)
Main handlers
    ↓ @dripnex/core operations
SQLiteNoteRepository

SQLite (better-sqlite3)  +  optional SyncService → api.dripnex.app (ciphertext)

Plugins run in the renderer. They receive a controlled PluginContext. They do not get raw SQL or Node fs.

Security Model

RuleReality
No nodeIntegrationRenderer cannot require Node.
contextIsolationOnly window.dripnex is exposed.
No executeSQLRenderer never sees SQL.
Typed IPCdefineIpcHandler + Zod on main.
PluginsTrusted, not sandboxed. new Function() in the renderer. Only load what the user installed.
SyncAES-256-GCM client-side. The Worker stores blobs.

Technology Stack

LayerTechnology
RuntimeElectron
Buildelectron-vite
DatabaseSQLite (better-sqlite3)
EditorCodeMirror 6
UI stateTanStack Query + Zustand
StylingCSS modules + tokens (no Tailwind on desktop)
SyncDesktop SyncService → Cloudflare Worker (api.dripnex.app)
Monorepopnpm + turborepo

On this page