Skip to content

About

Electron app - Calendar based daily notes (journal) stored in a SQLite DB.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Repository files navigation

Calendar Notes

A desktop journal for people who think in days.
Click a date, write the day down, and find it again months later with two words.

Latest release Platform Built with Electron License

Calendar Notes in the Tron theme, showing a day's note rendered as markdown

Calendar Notes keeps every day's entry in a single SQLite file that lives wherever you put it. Notes are plain text, so nothing is locked up in a proprietary format, but they render as markdown the moment you ask for it — headings, tables, code blocks, block quotes and checkboxes included.

Alongside the daily journal there is a persistent task list that never scrolls away, a word search that covers every note you have ever written, and an optional Documents mode for the longer-lived pages that do not belong to any single day.


Contents


Highlights

One note per day Click any date on the calendar and that day's note opens. Days that already have a note are highlighted.
Markdown when you want it Write plain text, then switch to a rendered view — or show both at once with SIDE-BY-SIDE.
Search that finds things Type two or three words and get back every date, and every document page, that contains all of them. Matches are highlighted in place.
A task list that stays put Reminders and to-do items live outside the calendar so they are always on screen.
Documents An optional hierarchical tree of documents and pages for reference material that is not tied to a date.
Export Any document or page goes out as PDF or DOCX, with an optional table of contents.
Nine built-in themes Plus import and export of your own theme files.
Your file, your folder A single SQLite database you can point anywhere — a synced folder, a USB stick, a NAS share.

Installation

Download the package for your platform from the releases page.

Windows

Run CalendarNotes Setup <version>.exe. The installer lets you choose the installation directory and creates Start Menu and desktop shortcuts.

Linux

Install the .deb package. It targets Debian-based distributions, including Ubuntu and Linux Mint:

sudo apt update
sudo apt install ./calendar-notes_<version>_amd64.deb

Calendar Notes then appears in the application launcher. If your distribution's apt is too old to install a local file, use gdebi instead:

sudo apt install gdebi
sudo gdebi calendar-notes_<version>_amd64.deb

Upgrading? Your notes are not touched by an installation. The database and settings live in your user profile, not in the program folder — see Where Your Notes Live.


First Run

Calendar Notes opens on today's date with an empty note and a default configuration — no setup, no account, no connection string. A new SQLite database is created in your user profile the first time the application starts.

Everything after that is optional: point the application at a different database file, pick a theme, turn on Documents. All of it lives behind the gear icon in the top right corner.


Daily Notes

The notes area on the right is the heart of the application. Whatever you type there belongs to the date selected on the calendar.

The notes editor in plain text editing mode

SAVE writes the current note to the database. When there are unsaved edits, the button changes to *SAVE* so the pending change is impossible to miss. Notes are also saved automatically when you change dates, switch panels, or close the application — and if a save is somehow still pending at shutdown, the application waits for it rather than dropping it.

REVERT throws away unsaved edits and reloads the note from the database. It is the undo button for the moment you realize the cat walked across the keyboard.


Tasks

The TASKS tab holds a single, persistent list that is not attached to any date. It is the right place for reminders, shopping lists and long-running to-dos — anything that should stay visible no matter which day you are looking at.

Tasks are plain text, saved automatically when you click away from the list, switch panels, change the date, or press Ctrl+S. Use the daily note to record that you actually worked on something; use the task list to remember that you still have to.


Date Navigation

Control Action
Click a day Opens that day's note
⟨ / ⟩ Previous / next month
Ctrl + ⟨ / ⟩ Previous / next year
⟩⟩ Jump straight to today

Days that already contain a note are shown highlighted, so a month at a glance tells you where the gaps are.


Markdown

Notes are stored as plain text, but the MARKDOWN button renders them. Headings, bold, italics, tables, nested lists, block quotes, fenced code blocks and inline HTML all work, courtesy of marked.

Calendar Notes adds one extra piece of syntax of its own — a checkbox:

|X| Something that is done
|_| Something that is not

Rendered notes are read-only. Click EDIT to go back to the text.

Right-clicking inside the editor offers INSERT TABLE, which drops a markdown table skeleton at the cursor, along with COPY and PASTE.

The editor context menu offering Insert Table, Copy and Paste


Side-by-Side Editing

SIDE-BY-SIDE splits the notes area: source on the left, live preview on the right. The preview updates as you type, which makes it the easiest way to get a table or a nested list right the first time.

Side-by-side editing with markdown source on the left and the rendered preview on the right


Full-Window Notes

The arrow to the left of NOTES hides the calendar and the side panels, giving the editor the whole window. Click it again to bring them back. The divider between the two halves can also be dragged if you would rather just rebalance them, and the application remembers where you left it.

The notes editor expanded to fill the entire window


Search

Click SEARCH, type one or more words, and press GO (or Enter). The search is inclusive: only entries containing all of the words are returned.

Search results listing matching document pages and dates, with the search term highlighted in the note

Results arrive as a list of buttons. Document pages are listed first as Document > Page, followed by every matching date. Matching words are highlighted in the note currently on screen.

Hover over any result to preview it in the notes area without leaving the search; click it to go there for real.

Hovering a search result previews that day's note with the matches highlighted


Documents

Documents are for the writing that does not belong to a particular day: references, procedures, checklists, project pages. Each document holds any number of pages, documents can be nested inside one another, and every page is edited with the same editor — markdown and all — as a daily note.

Documents are off by default. Turn them on with Enable Documents Feature in settings, and a DOCS tab appears beside TASKS and SEARCH.

The Documents panel showing a document tree on the left and the page list on the right

The document tree sits in the left panel; the pages of the selected document appear in their own panel on the right. + and - beside + ADD DOC expand and collapse the whole tree.

Adding Documents and Pages

  • + ADD DOC creates a new top-level document, together with its first page.
  • + ADD PAGE adds a page to the document currently selected.
  • To create a sub-document, right-click a document and choose ADD DOC.

New documents and pages are given a default name; rename them from the context menu.

A page belonging to a nested sub-document, rendered as markdown

Document Context Menu

Right-click a document in the tree.

The right-click context menu for a document

Item Action
ADD DOC Add a document beneath the selected one
RENAME Rename it. Documents at the same level must have unique names
REMOVE Delete it, along with every sub-document and page it contains
MOVE UP / MOVE DOWN Reorder it among its siblings. The nesting level does not change
EXPORT… Export the document — see Export

Page Context Menu

Right-click a page in the page list.

The right-click context menu for a page

Item Action
RENAME Rename it. Pages within a document must have unique names
REMOVE Delete the page
INCREASE INDENT / DECREASE INDENT Indent the page button to show how pages relate to one another. This is presentation only
MOVE UP / MOVE DOWN Reorder the page
EXPORT… Export the page — see Export

Drag and Drop

Documents and pages can be rearranged by dragging. Dragging a document carries its sub-documents with it; pages can be dragged from one document to another. Drop a document onto the + ADD DOC button to move it back to the top level.


Export

Right-click a document or a page and choose EXPORT….

The export dialog with file type, orientation, table of contents and export mode options

Option Choices
File Type PDF or DOCX
Page Orientation Portrait or landscape
Include Table of Contents Builds a TOC from the markdown headings (H1–H3) in the content. In both formats the entries are clickable links with dot leaders and page numbers
Export Mode Single Document writes every page into one file; Individual Documents writes one file per page
Export All Sub Documents Include everything nested beneath the selected document

Themes

Nine themes ship with the application. Pick one from the settings dialog and it is applied immediately.

Default
Default theme
Warm
Warm theme
Cool
Cool theme
Green
Green theme
Pink
Pink theme
Metal
Metal theme
OrangeWave
OrangeWave theme
Tron
Tron theme
Clu
Clu theme

Themes are JSON files. Export writes the current theme to a file you can edit or share; Import copies a theme file into your profile, after which it appears in the dropdown like any built-in one. For a visual way to build them, see the Calendar Notes Themes editor.


Settings

Click the gear in the top right corner.

The settings dialog showing database file, theme, spell checking and documents options

Setting What it does
Database File The SQLite file holding your notes, tasks and documents. Browse to point the application at a different one
Theme Choose a theme, or Import / Export theme files
Enable Spell Checking Red-underline misspelled words in the editor
Enable Documents Feature Show the DOCS tab and the document tree

The installed version number is shown in the bottom left of the dialog.


Keyboard Shortcuts

Shortcut Action
Ctrl + S Save the current note or task list
Tab Insert a tab character in the editor
Enter Run the search, from the search box
Esc Close the settings dialog, the export dialog, or a context menu
Ctrl + click on ⟨ / ⟩ Move the calendar a year instead of a month

Where Your Notes Live

Everything you write goes into one SQLite database file. Unless you move it, it is created in your user profile — not in the program folder, so installing a new version never touches it.

Platform Default database Settings and themes
Windows %APPDATA%\Calendar Notes\calendar-notes.db %APPDATA%\Calendar Notes\
Linux ~/.config/Calendar Notes/calendar-notes.db ~/.config/Calendar Notes/
macOS ~/Library/Application Support/Calendar Notes/calendar-notes.db ~/Library/Application Support/Calendar Notes/

Backing Up

Copy the database file. That is the whole backup — notes, tasks and documents are all inside it.

Moving It Somewhere Else

Put the file wherever suits you — a synced folder, an encrypted volume, a network share — and point Calendar Notes at it with Browse in settings. The choice is remembered, so this only has to be done once.

Coming from version 1.x? Older releases kept .calendarNotes.db inside the installation folder on Windows and in your home directory on Linux. If you are upgrading from one of those, copy that file somewhere safe first, then select it with Browse after the new version is installed.


Troubleshooting

Calendar Notes writes a log file every time it starts, capturing errors from both the main and renderer processes. The file is overwritten on each launch, so reproduce the problem and then read the log.

Platform Log file
Windows %APPDATA%\Calendar Notes\calendar-notes.log
Linux ~/.config/Calendar Notes/calendar-notes.log
macOS ~/Library/Application Support/Calendar Notes/calendar-notes.log

On Windows the quickest way there is Win+R, then paste:

%APPDATA%\Calendar Notes\calendar-notes.log

Development

Calendar Notes is an Electron application built with electron-vite, using better-sqlite3 for storage, marked for markdown and docx for Word export.

The calendar widget began life as this tutorial, and the application as a whole is a port of an earlier version written in Gambas.

Prerequisites

  • Node.js v18 or later (v20 recommended) and npm
  • A C/C++ toolchain, if better-sqlite3 has to be compiled from source

On Debian or Ubuntu:

sudo apt-get update
sudo apt-get install nodejs npm python3 build-essential

Getting Started

git clone https://github.com/dhunt84971/CalendarNotes.git
cd CalendarNotes
npm install
npm start

npm start runs electron-vite dev: it builds the main and preload scripts, starts a Vite dev server for the renderer and launches the application. Renderer changes hot-reload; changes to the main process or preload scripts need a restart.

On some Linux systems the Electron sandbox fails with a SUID error about chrome-sandbox. Work around it during development with:

npm run dev          # already sets ELECTRON_DISABLE_SANDBOX=1

Building Install Packages

Packages are produced by electron-builder and written to release/.

Command Output
npm run dist:linux release/calendar-notes_<version>_amd64.deb
npm run dist:win release/CalendarNotes Setup <version>.exe
npm run dist:mac macOS package
npm run dist Package for the current OS

Build on the operating system you are targeting. Cross-compilation is only partly supported — building the Windows installer on Linux needs wine and mono installed.

Project Layout

src/
  main/        Electron main process: window, IPC, logging, export back end
  preload/     Context-isolated bridge exposed to the renderer
  renderer/
    components/  Calendar, editor, panels, dialogs, context menus
    services/    Notes, tasks, documents, search, settings, export
    database/    SQLite access and query building
    ui/          Theme manager, DOM helpers, resizable panels

See BUILD_HISTORY.md for the release-by-release changelog.


Related Projects

Project Description
Calendar Notes Themes A visual theme editor for Calendar Notes. Create, edit and preview theme files with a live preview of the interface, click-to-select styling of individual UI components, and a color picker covering all 80+ theme properties. Runs on Linux and Windows.
Calendar Notes Mobile An Android companion app that reads and writes the same SQLite database format as the desktop application, so notes, documents and tasks are available on the go. Includes the calendar grid, markdown editing and preview, and the hierarchical document tree.

License

Released under the MIT License.

About

Electron app - Calendar based daily notes (journal) stored in a SQLite DB.

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages