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.
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
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)
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