A structured note-taking application with hierarchical organization built with Electron, React, and TypeScript.
- Hierarchical Organization: Create folders and entries in a tree structure
- Rich Text Editing: Powered by BlockNote editor with formatting tools
- Auto-save: All changes are automatically saved as you type
- Tab Management: Open multiple entries in tabs with keyboard shortcuts
- Drag & Drop: Reorder entries and folders by dragging
- Export: Export individual entries to Markdown format
- Recent Files: Quick access to recently opened journals
Journal Blocks uses .jb files (JSON format) to store your journals. Each file contains:
- Journal metadata (title, creation date, settings)
- Hierarchical structure of folders and entries
- Rich text content for each entry
Ctrl/Cmd + Tab- Next tabCtrl/Cmd + Shift + Tab- Previous tabCmd + [/]- Switch tabs (Mac)Ctrl/Cmd + W- Close tab- Double-click entry title to rename
# Install dependencies
npm install
# Start development server (automatic)
npm run dev
# If concurrently fails, run manually in two terminals:
# Terminal 1:
npm run dev:vite
# Terminal 2:
npm run dev:electron
# Build for production
npm run build
# Lint code
npm run lintIssue: Cannot find module '../src/assert' error with concurrently
This is a known issue with some versions of concurrently. Use the manual approach:
- Open two terminal windows in the project directory
- In terminal 1:
npm run dev:vite(starts the React dev server on http://localhost:5173) - In terminal 2:
npm run dev:electron(starts Electron and loads the React app)
Issue: Electron window is blank
Make sure the Vite dev server is running first before starting Electron. The Electron process expects the React app to be available at http://localhost:5173.
main.cjs- Electron main processpublic/preload.cjs- Electron preload scriptsrc/- React application sourcecomponents/- React componentscontext/- State managementtypes/- TypeScript interfaces
At this time, the Journal Blocks app is not signed on MacOS.
You can skip going to the security settings by just running the following command in Terminal.app after you install it.
xattr -d com.apple.quarantine "/Applications/Journal Blocks.app"Otherwise, what happens on open is you will be prompted with the following and be forced to select Done.
"Journal Blocks" Not Opened
After the app is blocked, you can go into Settings > Privacy & Security.
Scroll down to “Journal Blocks” was blocked to protect your Mac..
Click the "Open Anyway" button.