Overview
A lightweight command-line tool for quickly creating and managing daily markdown notes. Built as a simple shell script, it provides a no-frills note-taking workflow with git integration for synchronization and backup.
Philosophy
"I wanted a simple way to keep track of notes without all the bloat. I use this on a daily basis."
This tool embraces simplicity over features. No databases, no complex configuration, no heavy dependencies - just markdown files, git, and a shell script.
Features
- Quick Note Creation - Single command to create or open today's note
- Git Integration - Automatic version control and remote synchronization
- Markdown Format - Plain text notes that work with any editor
- Date Organization - Automatic date-based file naming
- Zero Dependencies - Just shell, git, and your preferred text editor
- Configurable - Custom notes location and git branch settings
Installation
git clone https://github.com/DeaSTL/daily-notes-cli
cd daily-notes-cli
cp ./notes ~/.local/bin/notes
Make sure ~/.local/bin is in your $PATH.
Setup
Initialize Notes Directory
# Create notes directory (default: ~/.notes)
mkdir ~/.notes
cd ~/.notes
# Initialize git repository
git init
git remote add origin <your-github-repo>
# Pull existing notes (if any)
git pull origin main
Configuration
Default settings:
- Notes Location:
~/.notes - Git Branch:
main
These can be customized by editing the notes script.
Usage
# Create or open today's note
notes
# The script will:
# 1. Create a new note if one doesn't exist for today
# 2. Open it in your default $EDITOR
# 3. Commit and push changes when you're done
Workflow Integration
Perfect for:
- Daily Standup Notes - Track what you're working on
- Learning Journal - Document what you learned today
- Todo Lists - Quick task tracking
- Meeting Notes - Fast note-taking during calls
- Code Snippets - Save useful commands and code
Why Shell Script?
- Portable - Works on any Unix-like system
- Transparent - Easy to read and modify the source
- Fast - No startup time or resource overhead
- Reliable - No dependencies to break
- Educational - Simple enough to understand and customize
Technical Details
The script handles:
- Date-based filename generation
- Git commit automation
- Remote synchronization
- Editor integration via
$EDITORenvironment variable - Directory creation and validation
Customization
Since it's just a shell script, you can easily modify it to:
- Change the date format in filenames
- Add custom templates for new notes
- Integrate with different version control systems
- Add pre/post-processing hooks
- Support different note organization schemes
Use Cases
Personal:
- Daily journaling
- Learning logs
- Idea capture
Professional:
- Sprint notes
- Standup tracking
- Project documentation
- Meeting minutes
Development:
- Command reference
- Debugging notes
- Architecture decisions