📈 GH Trending Explorer 🎲 Surprise me

← all repos

unclebob / bookwriter

git clone https://github.com/unclebob/bookwriter.git

A small writing application for one long book

+0
stars, 24h · #31,893
+~0
stars, 7 days · #32,368
+92
stars, 30 days · #5,089
93
★ total
5
forks · 0 open issues

Star history (as recorded here)

2026-10-20 · 92 ★ 2026-10-23 · 93 ★
LanguageTypeScript
License0BSD
Created2026-09-28 (24d ago)
Last push5d ago
Watchers1
OwnerUser

Links

README excerpt
# Bookwriter
Bookwriter is a writing application for one long book. The book is a folder of Markdown files. You write each piece on its own, arrange the pieces in an outline, and export one manuscript or a PDF.
The rules of the manuscript live in `bookwriter-spec.md`. This file is how you run the program and how a book is laid out on disk.
## Usage
Clone the repository, install the dependencies, and link `bw` onto your `PATH`:
 [code] 
`~/cmds` is one directory already on `PATH`. Any other directory on `PATH` works the same way. The link points at `bw` in the clone. The script resolves that link and uses the clone as its home.
The machine needs `zsh`, Node and npm, Rust (`cargo`), and the Xcode Command Line Tools.
Then:
 [code] 
`bw --help` and `bookwriter --help` print that usage and exit. `bw` with no directory, or with a path that is not a directory, prints the same usage and exits with status 64. `bw` opens the book from a Bookwriter app bundle, so the Dock and the app switcher show the book icon.
Inside the window:
- **File → Open Book** (⌘O) opens another folder. **Refresh** (⌘R) reads the book from disk again and shows it. It does not save the open buffer first. **Export Manuscript** (⌘⇧E) writes one Markdown file. **Export PDF** writes a PDF. The PDF prints the front matter's notes at the end of the front matter and each chapter's notes at the end of that chapter. **Export Chapters to Word** writes each front-matter piece as `FM-title.docx` and each chapter as `cc-title.docx` into one directory.
- The outline is the book. Drag a row to reorder it, or drop it on a folder to nest it. Right-click a chapter and choose **Export to PDF** to write a PDF of that chapter and the sections inside it. The form under the outline edits the title, synopsis, status, role, and unit. The book title is the field at the top of the window.
- A section opens in the Markdown editor. A folder opens as a reading view of that folder, in tree order. Typing in the reading view edits the section under the caret.
- **Markup** shows or hides the preview beside the editor. The preview follows the buffer, including unsaved text. Typing in the preview edits that buffer. Clicking in the Markdown scrolls the preview to that place.
- **Find** (⌘F) searches the open text. The find panel has a whole-book checkbox. Find Next is ⌘G.
- **Command Palette** (⌘K) inserts emphasis, strong, inline code, a link, a picture, a heading, a list, a quotation, a code block, or a footnote. The Markup page lists the same commands.
- A footnote marker in the preview scrolls to that note, and the return mark scrolls back. When the Markdown is on screen, the cursor moves to that same place.
## A book on disk
 [code] 
`book.yaml` holds the title.
 [code] 
Under `manuscript/`:
- A directory is a folder of pieces. `_index.md` inside it is that folder's own prose. The body may be empty.
- Any other `.md` file is a section.
- `trash/` holds deleted pieces. Empty trash removes those pieces and leaves t