GitHub - mkaz/jotit: Quickly jot and browse notes

4 min read Original article ↗

Jotit - simple note taking

A desktop app for quick note capture and browsing, built with Python and PyQt6.

Overview

One of the problems with taking notes is thinking about what file you're creating, where you're going to put it, what to name it, folder structures, etc. All these things get in the way of taking quick notes.

Jotit eliminates this friction by providing a simple app for capturing and browsing notes stored in a sqlite3 database.

Features

  • Desktop GUI: Browse and manage notes in a native desktop window
  • Built-in Editor: Edit notes directly in the app (no external editor needed)
  • Quick Note Capture: Add notes from the GUI or command line
  • Search: Find notes by keyword
  • Sort: Toggle between created date and recently updated
  • Right-click Context Menu: Edit, copy, delete notes
  • Date Filtering: Find notes by date range (CLI)
  • SQLite Storage: Reliable local storage with soft delete
  • Markdown Import: Bulk import from markdown files (CLI)
  • Clipboard: Copy notes to clipboard

Installation

Requires Python 3.11+ and uv.

git clone https://github.com/mkaz/jotit.git
cd jotit
uv sync

Usage

Launch the desktop app

uv run jotit
# or
just run

GUI Controls:

  • Toolbar: New, Edit, Save, Delete, Sort, Search
  • Right-click a note for context menu (Edit, Copy, New, Delete)
  • Ctrl+N - New note
  • Ctrl+E - Edit selected note
  • Ctrl+S - Save changes
  • Ctrl+D - Delete note
  • Ctrl+F - Toggle search
  • Ctrl+C - Copy note to clipboard
  • Escape - Cancel edit / close search

Add notes (CLI)

# Simple note
uv run jotit add "Had a great idea about improving user onboarding"

# With a specific date
uv run jotit add --date 2025-12-24 "Christmas day note"

# From stdin
git log --since=2025-10-31 | uv run jotit add

Find notes (CLI)

# Find notes by date
uv run jotit find --date 2025-12-24
uv run jotit find --after 2025-12-01
uv run jotit find --before 2025-12-31
uv run jotit find --after 2025-12-01 --before 2025-12-31

# Find notes by keyword (case-insensitive)
uv run jotit find -k meeting
uv run jotit find --keyword project

# Combine date and keyword
uv run jotit find --after 2025-12-01 -k project

# Pipe to other commands
uv run jotit find --after 2025-12-01 | llm summarize

Import from markdown (CLI)

# Import a single markdown file as a note
uv run jotit import ~/notes/ideas.md

# Import all markdown files from a directory
uv run jotit import ~/notes

# Split files by date headers (## Date format)
uv run jotit import --split ~/notes

When importing files, the note's created date is set to the current time, and the updated date is set to the file's modification time.

With --split, the importer looks for ## Date headers and treats the content below each header as a separate note. Supported date formats:

  • January 15, 2024
  • Jan 15, 2024
  • 2024-01-15
  • 01/15/2024

Configuration

Jotit can be configured via environment variables or a TOML configuration file located at ~/.config/jotit/jotit.toml.

Environment Variables

  • JOTIT_DB - Database file location (overrides config file)

Configuration File

Create ~/.config/jotit/jotit.toml:

[database]
path = "~/Documents/jotit.db"

[ui]
default_sort = "created"  # "created" or "updated"

[find]
separator = "---"  # separator between notes, empty string for none
with_date = true   # prepend date to each note
with_id = false    # prepend ID to each note

Database Schema

CREATE TABLE notes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP,
    is_deleted INTEGER DEFAULT 0
);

macOS App Bundle

To build Jotit as a standalone macOS app:

This creates dist/Jotit.app which you can copy to /Applications/:

cp -r dist/Jotit.app /Applications/

The app runs like any native macOS application — shows "Jotit" in the menu bar, launchable from Spotlight, etc.

Development

Requires just and uv.

just install   # Install dependencies
just run       # Run the app
just fmt       # Format code
just lint      # Lint code
just test      # Run tests
just build     # Build wheel
just app       # Build macOS .app bundle

License

MIT License - see LICENSE file for details.

Author

Created by Marcus Kazmierczak


Jotit - jot it down, find it later