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
- 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
- Fork the repo
- Create a feature branch (
git checkout -b feature/my-feature) - Run
npm run lintbefore committing - Open a pull request
Guidelines
- Use TypeScript for new React components
- Follow existing patterns in
src/helpers/andsrc/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/