Skip to content

AbdullahKhan08/secure-notes-app

Repository files navigation

Secure Notes

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.

Features

  • 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

Tech Stack

  • Electron
  • React
  • TypeScript
  • Node.js
  • Local file-based storage
  • electron-builder

Security Notes

  • Locked note content is encrypted using a local secret key.
  • The encryption key is stored in a local .env file 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.

Requirements

  • macOS
  • Node.js 18+
  • npm

Installation

git clone https://github.com/AbdullahKhan08/secure-notes-app.git
cd secure-notes-app
npm install

Environment Setup

Create a .env file in the project root:

SECRET_KEY=your-32-byte-base64-key

Generate a key with:

openssl rand -base64 32

A sample configuration is available in .env.example.

The SECRET_KEY is used to encrypt and decrypt locked notes.

Development

npm run dev

This starts the React development server and compiles the Electron main and preload processes.

The Electron application launches using:

http://localhost:3000

Production Build

Create a local macOS DMG and ZIP build:

npm run dist:mac

Build artifacts are generated in the release/ directory.

If macOS blocks an unsigned local build, right-click the application and select Open.

Publishing and Auto-Updates

See PUBLISHING.md for instructions on creating GitHub Releases with electron-builder and enabling auto-updates.

Project Structure

/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

Assets

  • App icon: build/icons/SecureNotes.icns
  • Splash screen: public/splash.html
  • Application logo: public/icons/secure-notes-logo.svg

What I Built

  • 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

Future Improvements

  • Automated tests
  • Secure backup and export options
  • Improved key-management workflow
  • Cross-platform Windows and Linux builds

License

MIT — see LICENSE.

About

Local-first Electron notes app with tagging, search, and encrypted locked notes.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors