The NoteWriter is a minimally-designed, file-based note management system for creative developers.
The NoteWriter is a CLI to parse Markdown files and extract objects (notes, flashcards, reminders, links). Objects are saved in packfiles (YAML files) that are pushed/pulled between devices and into a SQLite database for indexing, search, and performance reasons.
The NoteWriter Desktop is the desktop companion to use your notes in a creative way: journaling, studying flashcards, organizing using custom desks, finding inspiration by pondering on past notes, completing reminders, managing personal projects with tasks and (not so) much more.
The NoteWriter Nomad (upcoming) will be the mobile companion to carry your notes with you and study your flashcards on the go.
Check the landing page to understand the philosophy and the unique features or browse the documentation to understand my motivations, the core principles that influence the implementation.
There are many modern note-taking applications trying to do more than competitors. The NoteWriter does less, but differently.
The easiest way to install The NoteWriter is using the installation script:
curl -fsSL https://raw.githubusercontent.com/julien-sobczak/the-notewriter/main/install.sh | shThis will download the latest release for your platform and install it to $HOME/.nt/bin. Follow the instructions printed by the script to add the directory to your $PATH.
You can also install a specific version by passing the version tag as an argument:
curl -fsSL https://raw.githubusercontent.com/julien-sobczak/the-notewriter/main/install.sh | sh -s v0.0.1You can download the latest prebuilt binaries for Linux, macOS, and Windows from the Releases page.
You can always fetch the latest version directly using GitHub’s /releases/latest endpoint:
| Platform | Download link |
|---|---|
| Linux (amd64) | Download |
| macOS (amd64) | Download |
| macOS (arm64) | Download |
| Windows (amd64) | Download |
curl -L https://github.com/julien-sobczak/the-notewriter/releases/latest/download/nt-linux-amd64.tar.gz | tar xz
sudo mv nt /usr/local/bin/$ nt init
# Create a new directory .nt with default configuration files
$ cat .nt/config.jsonnet
# ...
# Add some Markdown files
$ nt add . && nt commitDocumentation is present in the directory website/. Run make docs to start locally.
.
├── cmd/ # CLI tools (nt, nt-anki, nt-book, etc.)
├── internal/ # Core logic (core, markdown, medias, etc.)
├── pkg/ # Public packages
├── build/ # Compiled binaries
├── examples/ # Example repositories
├── e2e/ # End-to-end tests
├── website/ # Documentation site (Astro/Starlight)
└── ...
- SQLite with FTS5 extension +
go-sqlite3. SQLite is used to build a database from notes to speed up UI actions and make possible full-text searches. - ffmpeg binary (
brew install ffmpeg). Used to convert the media files to different formats. - (Optional) Pandoc and Weasyprint for book generation.
Define a breakpoint. Inspect the repository root directory. Then:
# On MacOS if the application is installed
$ open -a "DB Browser for SQLite" dirname/.nt/database.dbCheck the tables, then close the application and resume the debugging session.