Skip to content

Repository files navigation

Outliner

Outliner Icon

A fast, keyboard‑first outliner for capturing, organizing, and zooming through ideas. Runs as a desktop app via Tauri, and can be served in the browser for quick local testing.

What is an outliner?

An outliner lets you write in a structured tree of bullets, expanding/collapsing detail to think at the right level. It’s great for notes, plans, drafts, and managing complex projects.

If you’re new to the concept, these are good starting points:

Highlights

  • Instant navigation: zoom in/out, expand/collapse, jump around with the keyboard
  • Clean, themeable UI: built-in light, dark, and synthwave‑84 themes
  • Local-first: JSON-based storage designed for speed and simplicity
  • Cross-platform foundation: Tauri + TypeScript

Install

Choose one of the following:

  • Option A — Prebuilt app (recommended)
    Prebuilt binaries will be published on the project’s Releases page.
    Link: https://github.com/AngeloR/outliner/releases

  • Option B — Build from source
    See Prerequisites, then:

git clone https://github.com/AngeloR/outliner
cd outliner
npm install
npm run tauri build

Prerequisites (for building locally)

  • Node.js and npm: Tested with Node 24.5.0 and npm 11.5.1 (Volta configured)
  • Rust toolchain: Stable Rust + Cargo (required by Tauri)
  • Platform deps:
    • macOS: Xcode Command Line Tools (xcode-select --install)
    • Windows/Linux: See Tauri prerequisites
  • Tauri CLI: Installed automatically via npm scripts; you can also npm exec tauri -- --help

Helpful links:

Run and build

  • Desktop (dev):
    npm run tauri dev
  • Desktop (release build):
    npm run build # bundle frontend
    npm run tauri build # produce a signed, distributable app in src-tauri/target
  • Web (serve the static UI for quick testing):
    npm run build # bundle frontend to public/assets
    npm run dev # serve ./public at http://localhost:3000
    Note: Some desktop-only features (like filesystem access) require the Tauri app.

Keyboard-first by design

Press the in‑app help (?) to see available shortcuts, or explore the src/keyboard-shortcuts/ directory. Common actions include creating bullets, indent/outdent, lift/lower, and zoom.

Keyboard shortcuts

Quick cheatsheet of key combinations and what they do. Keys are shown literally (Meta = Cmd on macOS).

KeyActionContext
ctrl + ;Toggle visibility of sidebarnavigation
ctrl + tOpen theme selectornavigation
shift + /Display help modalnavigation
ctrl + oOpen outline selectornavigation
ctrl + nCreate new outlinenavigation
gScroll to the very top of the documentnavigation
shift + gScroll to the very bottom of the documentnavigation
jMove the cursor to the next sibling of the current nodenavigation
kMove the cursor to the previous sibling of the current nodenavigation
lMove the cursor to the first child element of the current nodenavigation
hMove the cursor to the parent element of the current nodenavigation
zhide all children node of the current nodenavigation
tToggle current node as a tasknavigation
shift + 4Enter "Edit" mode and place the cursor at the end of the editable contentnavigation
iEnter "edit" mode and place the cursor at the start of the editable contentnavigation
tabAdd a new node as the child of the current nodenavigation
enterAdd a new node as the sibling of the current nodenavigation
shift + dDelete the current nodenavigation
shift + hLift the current node to be a sibling of the parent nodenavigation
shift + lLower the current node to be a child of the previous sibling nodenavigation
shift + kSwap the current node with the previous sibling nodenavigation
shift + jSwap the current node with the next sibling nodenavigation
shift + .Zoom into current node (virtual view)navigation
shift + ,Exit zoom and return to full outlinenavigation
escStop editing the current node and return to "navigation" modeediting
enterStop editing the current node and return to "navigation" modeediting
meta + shift + v or ctrl + shift + vPaste clipboard as plain text (no formatting)editing

Screenshots

Default themeDark themeSynthwave‑84 theme

Development

Useful commands:

npm run webpack-local # development build with watch
npm run build # production bundle
npm run dev # serve ./public for quick browser testing
npm run test# run unit tests (Jest)

Acknowledgements

  • Inspired by decades of outlining work, especially by Dave Winer. See outliners.com and scripting.com for history and ideas.

About

A cross platform desktop outliner with local opml storage

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages