A beautiful, feature-rich markdown notes application built with Electron. Dark theme with emerald green accents, real-time preview, and comprehensive backup system.
- Download the latest release from GitHub Releases
- Download the
EmeraldNotes-1.0.6.msiinstaller file - Run the installer by double-clicking the downloaded
.msifile - Follow the installation wizard (no configuration needed!)
- Launch EmeraldNotes from your Start Menu or Desktop shortcut
Security Note: Official releases are code-signed by Peyton Winn. While Windows may show a warning (due to self-signed certificate), you can verify authenticity by checking the certificate details show "EmeraldNotes" as the publisher.
- Download the latest release from GitHub Releases
- Download the
EmeraldNotes-1.0.6.dmginstaller file - Open the DMG file and drag EmeraldNotes to your Applications folder
- Launch EmeraldNotes from your Applications folder or Launchpad
System Requirements:
- Windows 10 or higher • 512 MB RAM • 200 MB disk space
- macOS 10.13 (High Sierra) or higher • Apple Silicon & Intel Macs supported
Note: The installers are ~100-200 MB and include everything you need to run EmeraldNotes.
Want to contribute or customize? Build it yourself:
# Clone the repository
git clone https://github.com/ExtraSharpLEGO/EmeraldNotes.git
cd EmeraldNotes
# Install dependencies
npm install
# Run in development mode
npm start
# Build MSI installer
npm run build:msi- Real-time Preview: WYSIWYG-style editing with live markdown rendering
- Syntax Highlighting: Code blocks with beautiful syntax highlighting
- Interactive Checkboxes: Click to toggle task list items directly in preview
- Rich Formatting: Support for all standard markdown features
- Markdown Cheat Sheet: Quick reference guide accessible via help button (?)
- Drag & Drop Images: Simply drag images into the editor
- Auto-save: Changes save automatically as you type
- VS Code-Style Explorer: Collapsible folder tree with inline expansion
- Drag & Drop: Move files between folders effortlessly
- Folder Organization: Hierarchical folder structure in sidebar
- Quick Actions: Create notes and folders with keyboard shortcuts
- Context Menus: Right-click to rename, delete, or show in File Explorer
- Directory Switching: Easily switch between different note directories
- Auto-created Sample: Empty directories get a helpful sample note
- Perfect Alignment: Clean, depth-based indentation for nested items
-
File Backups (Continuous)
- Created when you start editing
- Updated when you navigate away or close the app
- One backup per file, always current
-
Session Backups (Snapshots)
- Created when app opens or directory selected
- Immutable snapshot of all files at that moment
- Keeps 10 most recent sessions automatically
- Perfect for time-travel restoration
- Individual File: Click ↻ button in editor to restore specific file
- Full Session: Help menu → Restore to Previous Session for all files
- Dark Theme: Easy on the eyes with #1a1a1a background
- Emerald Accents: Vibrant #4ade80 green highlights
- Clean Interface: Intuitive sidebar and editor layout
- Styled Modals: Professional dialogs for backups and actions
- Node.js (v16 or higher)
- npm or yarn
-
Clone or download this repository
-
Install dependencies
npm install
-
Run the app
npm start
To create installers for distribution:
# Windows MSI installer
npm run build:msi
# macOS DMG installer (Universal: Intel + Apple Silicon)
npm run build:mac
# Both platforms
npm run build:allThe installers will be created in the dist/ folder.
📚 Detailed Build Instructions: See BUILD_GUIDE.md for comprehensive build instructions, code signing, notarization, and mobile platform considerations.
- Click "Choose Folder" to select your notes directory
- If empty, a sample note will be created automatically
- Start editing or create new notes and folders
- Button: Click the + Note button in sidebar
- Menu: File → New Note
- Shortcut:
Ctrl+N(Windows) orCmd+N(Mac)
- Button: Click the + Folder button in sidebar
- Menu: File → New Folder
- Shortcut:
Ctrl+Shift+N(Windows) orCmd+Shift+N(Mac)
- Open the file you want to restore
- Click the ↻ (restore) button in the editor header
- Choose from SESSION or FILE backups
- Confirm to restore
- Click Help menu in the menu bar
- Select Restore to Previous Session
- Choose which session to restore from
- Confirm to restore all files
- Type task lists in markdown:
- [ ] Taskor- [x] Done - Click checkboxes directly in the preview panel
- Changes save automatically
EmeraldNotes/
├── main.js # Electron main process
├── renderer.js # UI logic and editor
├── preload.js # IPC bridge
├── index.html # Application structure
├── styles.css # Dark theme styling
├── package.json # Dependencies and config
├── SAMPLE_NOTE.md # Template for new directories
└── README.md # This file
Your notes are stored as .md files in any directory you choose. The app remembers your last selected directory.
Backups are stored in .backups/ folder within your notes directory:
{filename}.md- Continuous file backups.backup-session-{timestamp}/- Session snapshots
Click the 🏠 (home) icon in sidebar or use File → Select Directory
| Action | Windows/Linux | Mac |
|---|---|---|
| New Note | Ctrl+N |
Cmd+N |
| New Folder | Ctrl+Shift+N |
Cmd+Shift+N |
| Open Directory | Ctrl+O |
Cmd+O |
| Toggle Code View | Click button | Click button |
| Reload | Ctrl+R |
Cmd+R |
| Toggle DevTools | Ctrl+Shift+I |
Cmd+Option+I |
| Quit | Ctrl+Q |
Cmd+Q |
- Electron 26.0.12 - Desktop application framework
- Marked.js - Markdown parsing and rendering
- Highlight.js - Syntax highlighting for code blocks
- DOMPurify - Safe HTML sanitization
- Main Process: File operations, IPC handlers, backup management
- Renderer Process: UI, editor, markdown preview
- Preload Script: Secure IPC bridge with context isolation
The preview panel is contentEditable, allowing direct WYSIWYG editing while maintaining markdown source.
- File Backups: Copy on edit start, update on navigation/close
- Session Backups: Recursive copy on app open, cleanup keeps 10 newest
- Timestamps: UTC ISO format, displayed in local time
Checkboxes in preview are clickable. On click:
- Parse preview HTML back to markdown
- Toggle checkbox state in markdown
- Re-render and save
Solution: Check that you have write permissions to the notes directory
Solution: Backups are only created after you start editing. Open and edit a file first.
Solution: This was fixed in v0.1.0. Update to latest version.
Solution: This was fixed in v0.1.0. Update to latest version.
This is a personal project, but suggestions and bug reports are welcome!
MIT License - feel free to use this project as you wish.
Potential future enhancements:
- Export to PDF
- Full-text search across all notes
- Tags and categories
- Cloud sync integration
- Custom themes
- Plugin system
- New Feature: AI Assistant integration powered by GitHub Models
- Access GPT-4o-mini and other models directly from the editor
- Intelligent content generation, reformatting, and markdown assistance
- Seamless API integration with GitHub's AI inference service
- Context-aware prompting with insert, append, and replace modes
- Configurable via Settings menu with secure token storage
- Enhanced: Markdown preprocessing system for better tilde handling
- Improved: Input event management with flag-based control system
- Improved: Enhanced markdown parsing with better special character handling
- Enhanced: Preview panel input event processing
- Stability: Refined contenteditable editor behavior
- New Feature: Markdown Cheat Sheet - comprehensive syntax reference accessible via help button (?)
- Quick reference for headers, emphasis, lists, links, images, code blocks, and more
- Beautiful modal with dark theme matching app design
- Located in editor toolbar for easy access
- Improved: Event listener initialization order for better stability
- New Feature: Down arrow key exits code blocks - press down on last line to create new paragraph below
- Bug Fix: Checkbox click events no longer trigger conversion errors
- Improved: Code block navigation with keyboard
- New Feature: Subfolder image support - images now work correctly in nested folders
- Images are saved to
img/folder in the same directory as the markdown file imgfolders are automatically hidden from the file tree (like.backups)- Works at any folder depth - root or deeply nested
- Backward compatible with existing root-level images
- Updated IPC bridge to pass current file path for proper folder creation
- Images are saved to
- Fixed: Code block language dropdown bug - changing language no longer deletes file content
- Added event propagation prevention on dropdown change events
- Improved code block matching using content comparison instead of fragile regex
- Fixed: Inline code cursor positioning - cursor now stays outside closing backtick
- Added zero-width space after inline code for proper cursor placement
- Enables natural text flow after typing
`code`
- Fixed: Backup restore read-only bug - files remain editable after restore
- Implemented window reload after restore operations
- Works for both individual file and session restore
- Files editable in both preview and raw markdown modes
- Initial release with full feature set
- Dark theme with emerald accents
- Two-tier backup system
- Interactive checkboxes
- MSI installer distribution
- Automatic session cleanup (10 most recent)
- Organize with Folders: Use nested folders to categorize your notes
- Use Backups: Restore points are automatic - don't worry about losing work
- Markdown Shortcuts: Learn basic markdown for faster note-taking
- Context Menus: Right-click files and folders for quick actions
- Session Restore: Perfect for undoing bulk changes or recovering from mistakes
- Markdown syntax by John Gruber
- Icons from Feather Icons
- Syntax highlighting by highlight.js
- Built with Electron
Made with ❤️ by Peyton Winn
Happy note-taking! 📝✨