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.
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.
- Highlights
- Installation
- First Run
- Daily Notes
- Tasks
- Date Navigation
- Markdown
- Side-by-Side Editing
- Full-Window Notes
- Search
- Documents
- Export
- Themes
- Settings
- Keyboard Shortcuts
- Where Your Notes Live
- Troubleshooting
- Development
- Related Projects
- License
| 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. |
Download the package for your platform from the releases page.
Run CalendarNotes Setup <version>.exe. The installer lets you choose the
installation directory and creates Start Menu and desktop shortcuts.
Install the .deb package. It targets Debian-based distributions, including
Ubuntu and Linux Mint:
sudo apt update
sudo apt install ./calendar-notes_<version>_amd64.debCalendar 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.debUpgrading? 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.
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.
The notes area on the right is the heart of the application. Whatever you type there belongs to the date selected on the calendar.
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.
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.
| 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.
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.
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.
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.
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.
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.
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 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.
- + 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.
Right-click a document in the tree.
| 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 |
Right-click a page in the page list.
| 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 |
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.
Right-click a document or a page and choose EXPORT….
| 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 |
Nine themes ship with the application. Pick one from the settings dialog and it is applied immediately.
Default![]() |
Warm![]() |
Cool![]() |
Green![]() |
Pink![]() |
Metal![]() |
OrangeWave![]() |
Tron![]() |
Clu![]() |
|
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.
Click the gear in the top right corner.
| 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.
| 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 |
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/ |
Copy the database file. That is the whole backup — notes, tasks and documents are all inside it.
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.dbinside 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.
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
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.
- Node.js v18 or later (v20 recommended) and npm
- A C/C++ toolchain, if
better-sqlite3has to be compiled from source
On Debian or Ubuntu:
sudo apt-get update
sudo apt-get install nodejs npm python3 build-essentialgit clone https://github.com/dhunt84971/CalendarNotes.git
cd CalendarNotes
npm install
npm startnpm 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=1Packages 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.
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.
| 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. |
Released under the MIT License.





















