Skip to content

mkaz/jotit

Repository files navigation

Jotit - simple note taking

A command-line tool for quick note capture and browsing, built with Go.

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 CLI for capturing and browsing notes stored in a sqlite3 database.

Demo

Jotit SVG animation demo

Features

  • Quick Note Capture: Add notes instantly from the command line
  • Interactive TUI: Browse and manage notes in a terminal interface
  • Date Filtering: Find notes by date range
  • Keyword Search: Find notes containing specific text
  • SQLite Storage: Reliable local storage with soft delete
  • Markdown Import: Bulk import from markdown files

Installation

Download the latest binary from GitHub Releases and place it in your PATH.

macOS: Remove the quarantine flag after downloading:

xattr -d com.apple.quarantine jotit

Install with Go

go install github.com/mkaz/jotit/cmd/jotit@latest

Build from Source

git clone https://github.com/mkaz/jotit.git
cd jotit
go build -o jotit ./cmd/jotit

Usage

Browse notes (TUI)

# Launch the interactive browser
jotit

Keybindings in TUI:

  • ↑/k, ↓/j - Navigate
  • / - Search
  • s - Toggle sort (created date / recently updated)
  • n - New note (opens $EDITOR)
  • e - Edit note (opens $EDITOR)
  • c - Copy note to clipboard
  • d - Delete note
  • tab - Switch panels
  • q - Quit

Add notes

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

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

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

# Interactive form (no arguments)
jotit add

Find notes

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

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

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

# Pipe to other commands (e.g., LLM summarizer)
jotit find --after 2025-12-01 | llm summarize

Import from markdown

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

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

# Split files by date headers (## Date format)
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
);

License

MIT License - see LICENSE file for details.

Author

Created by Marcus Kazmierczak


Jotit - jot it down, find it later

About

Quickly jot and browse notes

Resources

License

Contributing

Stars

Watchers

Forks