A lightweight, local-first desktop app for keeping organised meeting notes with the people you work with. Track every 1:1 and team conversation by person, write in Markdown with live preview, tag and filter notes by topic, and even record meetings to transcribe and summarise them into bullet points — all on-device. Your data never leaves your machine: no cloud, no accounts, and it works completely offline. Built with Electron.js and Express.
- 📝 Track meeting notes for multiple people
- 👥 Manage contacts with names, roles, and teams
- 🏷️ Tag and filter notes by topic
- ✍️ Markdown support with live preview
- 🎙️ Voice recording with offline speech-to-text (mic and/or system audio)
- 💾 Autosave & local-only data storage
- 🎨 Light/dark theme
- 🔄 Automatic updates via GitHub Releases
- 🌐 Works completely offline
Download the latest release from the Releases page:
- Windows — run
Meeting Notes Setup x.x.x.exe
Updates are delivered automatically after install.
On first install you may see a blue "Windows protected your PC" dialog (Microsoft Defender SmartScreen) describing Meeting Notes as an unrecognised app. This appears because the installer is signed with a self-signed certificate rather than one from a paid certificate authority — Windows can't verify the publisher, so it warns you. It is expected and not a sign that the app is unsafe, and it normally only shows on the first install on each machine.
To continue:
- Click the More info link (small text under the message).
- Click the Run anyway button that appears, then follow the installer.
If your browser blocks the download first (e.g. Edge/Chrome says it "can't be downloaded securely"), open the browser's Downloads list, find the file, and choose Keep / Keep anyway. You can also right-click the downloaded .exe → Properties and tick Unblock (if shown) before running it.
If there is no More info link, SmartScreen is set to block rather than warn (an administrator policy), which only an admin can change.
git clone https://github.com/deanhume/meeting-notes.git
cd meeting-notes
npm install
npm run fetch-model # downloads the bundled speech-to-text model (~290 MB)
npm startOn-device voice transcription runs in the app via Transformers.js + ONNX Runtime Web — on the GPU (WebGPU) where available, falling back to CPU (WASM) otherwise. The quantised Whisper-small.en model (
public/models/whisper-small.en/, ~290 MB) is not committed to git;npm run fetch-modeldownloads it, and the build bundles it (plus the runtime) into the installer so end users never download anything and nothing ever leaves the machine. The Record button is hidden until the model is present.
| Topic | Description |
|---|---|
| Development Guide | Project structure, API endpoints, scripts, data storage |
| Building & Distribution | Creating installers, build config |
| Usage & Troubleshooting | Settings, keyboard shortcuts, common issues |
| Auto-Updates | How updates work, testing, troubleshooting |
| Release Checklist | Step-by-step guide for publishing new versions |
Electron.js · Express.js · Vanilla JS · JSON storage · electron-updater
MIT — Dean Hume
Built with ❤️ using Electron.js
