Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

jtaylortech/journalot

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

journalot

License: MIT Bash Version GitHub stars

journalot demo

Minimal journaling CLI for developers. Just type journal in your terminal and start writing.

Website: journalot.dev

Why journalot?

Every journaling app has the same problem: friction. Open app → wait for sync → click new entry → choose template...

journalot eliminates all of that:

  • You're already in terminal → just type journal
  • Opens in your preferred editor → no learning curve
  • Auto-commits to git → no manual syncing
  • Just markdown files → complete ownership

The best productivity tool is the one you actually use.

Installation

Homebrew (Recommended)

brew tap jtaylortech/journalot
brew install journalot

Manual

git clone git@github.com:jtaylortech/journalot.git
cd journalot
sudo ./install.sh

Optional: Install fzf for interactive fuzzy-search in --list.

Usage

# — Everyday —
journal                              # Open today's journal
journal "Had a breakthrough today"   # Quick capture (no editor)
journal --yesterday                  # Open yesterday's entry
journal --last                       # Open most recent entry
journal --date "last friday"         # Natural language dates ("3 days ago", "last monday")

# — Browse & Search —
journal --list                       # List entries (fzf interactive if installed)
journal --list --oldest-first        # Oldest first
journal --calendar                   # Monthly calendar with entry indicators
journal --calendar 2026-01           # Specific month
journal --search "confidence"        # Full-text search with context and highlighting
journal --week                       # Open all entries from this week
journal --tag work                   # Filter entries by #tag
journal --random                     # Show a random past entry

# — Stats & History —
journal --stats                      # Statistics + current/longest streak
journal --diff 2025-01-15            # Git history for an entry
journal --prompt                     # Today's writing prompt

# — Export & Backup —
journal --export html                # Export to HTML
journal --export pdf                 # Export to PDF (requires pandoc)
journal --backup                     # Create timestamped backup
journal --restore                    # Restore from backup (interactive)
journal --archive 2024               # Archive all 2024 entries

Multiple Journals

journal --switch work                # Switch to (or create) 'work' journal
journal --switch kids --shared       # Switch to 'kids' and mark as shared
journal --switch default             # Return to default journal
journal --list-journals              # List all journals
journal --new-journal work           # Explicitly create a named journal

Each journal lives at ~/journalot/journals/NAME/ with its own entries/ and git repo. Your default journal at ~/journalot/ is unchanged. Disable with MULTI_JOURNAL=false.

Shared Journals

For two people writing to the same journal, synced via a private git repo:

# Person 1
journal --switch kids --shared
cd ~/journalot/journals/kids
git remote add origin git@github.com:you/kids-journal-private.git
git push -u origin main

# Person 2
mkdir -p ~/journalot/journals
git clone git@github.com:you/kids-journal-private.git ~/journalot/journals/kids
journal --switch kids --shared

Shared journals auto-pull on open, warn before conflicts, auto-commit and push on save, and include a conflict resolution helper if push fails.

Git Sync (Private Journal)

cd ~/journalot
git init
git remote add origin git@github.com:<your-username>/my-private-journal.git
git push -u origin main

SSH setup guide

Configuration

~/.config/journalot/config:

AUTOSYNC=true          # Skip commit/push prompts
DISABLE_PROMPTS=true   # Disable daily writing prompts
GIT_BRANCH=master      # Custom git branch (default: main)
MULTI_JOURNAL=false    # Disable multi-journal support
# JOURNAL_DIR="$HOME/my-journal"  # Custom journal directory

Custom entry template: ~/journalot/template.md (supports {{date}}, {{day_of_week}}, {{week_number}}, {{time}} placeholders)

Custom prompts: ~/journalot/prompts.md (one per line) or day-specific files like ~/journalot/prompts-monday.md


Support journalot

💖 Sponsor on GitHub | Learn more

Current Sponsors

Thank you to all sponsors! Your support makes journalot possible.


License

MIT — see LICENSE

About

Minimal journaling CLI for developers. Git-backed, terminal-native, zero friction. Just type `journal` and start writing.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.