Thank you for your interest in contributing to WhisperDesk! We welcome contributions from the community to help make this the best desktop transcription app for macOS.
WhisperDesk is an Electron app that uses a native C++ binary (whisper.cpp) for transcription. Because of this native dependency, the setup process has one extra step compared to a standard web project.
- Node.js (v18 or later recommended)
- macOS (Required for Metal GPU acceleration support)
- Xcode Command Line Tools (for compiling whisper.cpp)
xcode-select --install
- CMake (Required for building whisper.cpp)
brew install cmake
- FFmpeg (Required for audio processing)
brew install ffmpeg
-
Clone the repository
git clone https://github.com/pedrovsiqueira/whisperdesk.git cd whisperdesk -
Install dependencies
npm install
-
Setup whisper.cpp This script downloads the
whisper.cppsource code and compiles thewhisper-clibinary with Metal support. It places the binary in thebin/directory.npm run setup:whisper
-
Run in Development Mode This starts both the Vite dev server (renderer) and the Electron main process.
npm run electron:dev
electron/: Main process code (Node.js). Handles native OS integration and spawning the whisper binary.src/: Renderer process code (React + TypeScript).features/: Feature-based architecture. Most UI logic lives here.services/: Shared services, including theelectronAPIbridge.
scripts/: Build and setup scripts.
We use ESLint and Prettier to maintain code quality.
- Linting:
npm run lint - Formatting:
npm run format - Type Checking:
npm run typecheck
Please ensure all checks pass before submitting a Pull Request.
This project uses Conventional Commits to automate versioning and changelogs.
feat: ...for new featuresfix: ...for bug fixesdocs: ...for documentation changesrefactor: ...for code refactoringchore: ...for maintenance tasks
- Fork the repository and create your branch from
main. - If you've added code that should be tested, add tests.
- Ensure the test suite passes (
npm test). - Make sure your code lints (
npm run lint). - Issue that Pull Request!
- Bugs: open a GitHub issue (use the bug report template) so we have macOS and WhisperDesk version info plus reproduction steps ready to go.
- Feature ideas: start a conversation in Discussions; we keep idea validation there and only convert posts into issues once the scope is clear.
- Search first: browse existing issues + discussions before posting to avoid duplicates.