Skip to main content
We welcome contributions. Here’s how to get started.

Setup

Use Node.js 24 (pinned in .nvmrc). Running npm install with a different major version produces an incompatible lockfile.

Development scripts

Architecture

The app has two windows sharing one React codebase:
  • Main window — minimal overlay for dictation controls
  • Control panel — full settings, history, notes, and integrations
Key layers:
  • Main process (main.js) — Electron main, IPC handlers, database
  • Preload (preload.js) — secure bridge between main and renderer
  • Renderer — React 19, TypeScript, Tailwind CSS v4, shadcn/ui

Tech stack

  • React 19, TypeScript, Tailwind CSS v4, Vite
  • Electron 41 with context isolation
  • better-sqlite3 with FTS5
  • shadcn/ui with Radix primitives
  • whisper.cpp + sherpa-onnx for local transcription

Submitting changes

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Run npm run lint before committing
  4. Open a pull request

Guidelines

  • Use TypeScript for new React components
  • Follow existing patterns in src/helpers/ and src/hooks/
  • All new UI strings must use the i18n system (9 languages supported)
  • Test on your target platform before submitting
  • Add translation keys to all language files in src/locales/