A local-first desktop notes application for macOS, built with Electron and React.
Secure Notes lets users create, organize, search, and manage personal notes, with optional password-protected notes encrypted before local storage.
This project is intended for personal productivity and learning. It is not a replacement for a professionally audited password manager or enterprise secrets-management tool.
- Create, edit, and delete notes
- Organize notes with tags
- Search notes quickly
- Optional password-locking for sensitive notes
- Encryption and decryption of locked note content
- Local-first storage for personal use
- macOS desktop application with Electron
- Production packaging as DMG and ZIP
- GitHub Release support for auto-updates
- Electron
- React
- TypeScript
- Node.js
- Local file-based storage
- electron-builder
- Locked note content is encrypted using a local secret key.
- The encryption key is stored in a local
.envfile and is not committed to the repository. - Use a unique secret key for your own local environment.
- This project does not send note content to a remote server.
- macOS
- Node.js 18+
- npm
git clone https://github.com/AbdullahKhan08/secure-notes-app.git
cd secure-notes-app
npm installCreate a .env file in the project root:
SECRET_KEY=your-32-byte-base64-keyGenerate a key with:
openssl rand -base64 32A sample configuration is available in .env.example.
The SECRET_KEY is used to encrypt and decrypt locked notes.
npm run devThis starts the React development server and compiles the Electron main and preload processes.
The Electron application launches using:
http://localhost:3000
Create a local macOS DMG and ZIP build:
npm run dist:macBuild artifacts are generated in the release/ directory.
If macOS blocks an unsigned local build, right-click the application and select Open.
See PUBLISHING.md for instructions on creating GitHub Releases with electron-builder and enabling auto-updates.
/src React renderer application
/public Static assets, splash screen, and icons
/dist Compiled Electron main and preload processes
/renderer Generated production React build
/build electron-builder resources, icons, and entitlements
/release Generated DMG and ZIP build outputs
main.ts Electron main process
preload.ts Electron preload process
types.ts Shared application types
- App icon:
build/icons/SecureNotes.icns - Splash screen:
public/splash.html - Application logo:
public/icons/secure-notes-logo.svg
- Electron desktop application architecture using TypeScript
- React-based note interface
- Local note creation, editing, deletion, and tagging
- Search functionality for notes
- Password-locked note workflow with encryption
- Environment-based secret-key handling
- macOS packaging and release configuration
- Automated tests
- Secure backup and export options
- Improved key-management workflow
- Cross-platform Windows and Linux builds
MIT — see LICENSE.