Skip to main content
Notvex

Notvex

Notvex is a desktop app for taking notes privately and encrypted, without relying on any external service. No accounts, no cloud sync, no telemetry.

ElectronReactTypeScriptTailwind CSSSQLCipher

Overview

Cross-platform desktop app (Windows, macOS, Linux) for private markdown note-taking. Every note lives encrypted inside a single vault file (vault.nvx) that never leaves your disk — no account, no server, no telemetry, and the entire codebase is auditable.

Key features

  • Notes — markdown notes with autosave, pinning, full-text search, and a trash with restore or permanent delete.
  • Tags — color-coded tags assignable from the editor or command palette, with filtering and per-tag counts.
  • Markdown editor — CodeMirror 6 editor with syntax highlighting, a formatting toolbar, live inline preview, and a dedicated GFM reading view.
  • Command palette & shortcuts — Ctrl+K command palette plus keyboard shortcuts for creating notes, locking the vault, and switching views.
  • Multi-vault — create, open and switch between multiple vaults, with backup export at any time.
  • Auto-update — built-in update checks and in-app installs via electron-updater.

Security & privacy

  • SQLCipher encrypts the whole SQLite database (AES-256, page-level).
  • Field-level encryption — note titles and content are additionally encrypted with XChaCha20-Poly1305 on top of SQLCipher.
  • Argon2id key derivation, auto-calibrated per machine (~1.5s), with an optional key file as a second unlock factor.
  • 24-word BIP39 recovery key, regenerated on every password or key-file change.
  • The master key is never written to disk — kept memory-pinned and wiped on lock.
  • Configurable auto-lock, forced lock on sleep/lock-screen/focus-loss, screen-capture protection, and progressive delay after failed unlock attempts.

Tech stack

Electron + React 18 + TypeScript, split into isolated main/preload/renderer processes (only the main process touches cryptography and SQL). Styled with Tailwind CSS 4 and shadcn/ui, state managed with Zustand, bundled with electron-vite, and tested with Vitest.