A beautiful, local-first, private desktop journal application built on the Bun JavaScript runtime and powered by the Electrobun desktop webview framework.
Your thoughts stay strictly on your device. The application does not connect to external servers or cloud services.
- Entries are persisted locally in
entries.jsonwithin your workspace directory. - Settings (active theme and window dimensions) are stored locally in
settings.json.
- Supports seamless switching between a clean, paper-like Light Mode and a focused Dark Mode.
- Theme selections and window dimensions are automatically persisted across application restarts.
- Native Feel: Tailored specifically for macOS using native system fonts (
-apple-system,SF Pro), and launched with ahiddenInsettitle bar style matching standard macOS apps. - Micro-animations: Incorporates subtle hover effects on entries, scaling animations on interactive buttons, and custom caret styling.
- Glassmorphism: Elegant blur backdrops on the sidebar navigation and headers.
- Editor: Styled writing workspace with custom text selections, carets, and wrapping.
- Mood Selector: One-click selector supporting 7 emotion states: Happy, Excited, Peaceful, Neutral, Sad, Angry, and Tired.
- Tag Support: Categorize entries using comma-separated tags that parse automatically into search badges.
- Real-time Search: Matches title, content, or tags instantly as you type.
- Mood Filtering: Quick dropdown to filter reflections by emotion.
- Date Timeframes: Quick presets (All Time, Today, This Week, This Month, This Year) or a Custom Date Range selection with two calendars.
Navigate your journal quickly from your keyboard:
ArrowDownorj— Select the next entry in the list.ArrowUpork— Select the previous entry in the list.n— Open the editor to create a new reflection.e— Edit the selected reflection./ors— Place focus on the search input box.Escape— Cancel editing or clear the active search query.
personal_journal/
├── src/
│ ├── index.ts # Main Process (Bun runtime: Window, FFI, RPC)
│ ├── shared/
│ │ └── types.ts # Shared TypeScript schemas and RPC typings
│ └── renderer/
│ ├── index.html # Frontend view layout
│ ├── index.css # Core CSS stylesheet, variables, and themes
│ └── index.ts # Frontend view scripts and Electroview client
├── electrobun.config.ts # Electrobun compiler configurations
├── package.json # Dependencies and runner scripts
└── tsconfig.json # TypeScript compiler settings
Make sure you have Bun installed, then run:
bun installTo launch the desktop application, compile assets, and attach FFI/sockets:
bun run devTo bundle, compile, and minify the main process and view files:
bun run buildThis outputs a compiled macOS application bundle under:
build/stable-macos-arm64/Personal Journal.app


