Skip to content

chrmzio/nof

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nof stats

nof - Notes CLI Tool

A simple command-line tool for managing a personal notes repository. Built with Spring Shell for a smooth interactive experience.

What it does

nof helps you manage markdown notes with a straightforward CLI interface. It handles daily journals, standard notes, and provides search/grep functionality across your note collection.

Installation

Prerequisites

  • Java 17+ (for running the jar)
  • GraalVM (for building native binary)
  • Optional: fzf for interactive file selection

Building

# Standard jar
./mvnw clean package

# Native binary (faster startup)
./mvnw clean package -Pnative -DskipTests
sudo cp target/nof /usr/local/bin/nof

Usage

Interactive mode

Just run nof to start an interactive shell:

nof
shell:> stats
shell:> dn "Today's entry"
shell:> exit

Non-interactive mode

Run commands directly from your shell:

nof stats
nof dn "Quick journal entry"
nof sn "New Note Title"
nof gn "TODO" -l

Commands

sn - Create a standard note in Inbox and opens it automatically

nof sn "Meeting Notes" # becomes -> # Meeting Notes (H1 title)

dn - Daily journal entry

nof dn "Today was productive" # append just this one line
nof dn # lets you write multiple line markdown and appends it when you're done writing (.. on the new line to end the record)
nof dn -o  # Open today's journal in your editor

nof multi

on - Open a note (with fuzzy search if fzf is installed)

nof on project # opens fzf with "project" selected

gn - Search/grep through notes

nof gn "TODO" -l          # Show matching lines
nof gn "pattern" -i       # Case insensitive
nof gn "^#" -r -l         # Regex mode with lines

go - Open files from last grep results

nof go 1                  # Open first result
nof go filename           # Open by name
nof go                    # Open all results

stats - Repository statistics (works also with git)

config - Manage configuration

nof config show
nof config edit

logs - View application logs

nof logs 100
nof logs open

Configuration

Config file: ~/.config/nof/application.properties

# Notes repository path
nof.repository.path=${HOME}/notes

# Default editor
nof.repository.editor=hx

# Log level
nof.logging.level=INFO

Repository Structure

I follow this structure for my notes. New notes go to my Inbox, where they are reviewed and condensed into a concise version that then moves to my Zettelkasten. Notes meant to be published on the blog are sent to my Output folder, while my Journal is used for personal journalling.

I might make this also configurable via config file later on.

notes/
├── Inbox/           # Unprocessed notes
├── Zettlekasten/    # Organized knowledge base
├── Journal/         # Daily notes (YYYY-MM-DD.md)
└── Output/          # Notes ready for publishing

Development

# Run tests
./mvnw test

License

Do whatever you want with it.

About

Notes managing tool

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages