Terminal markdown editor with live preview and a multi-site static blog engine. Built in Rust with ratatui.
Embeds vim via PTY with real-time markdown preview. Left pane is full vim. Right pane renders markdown as you type.
make editor.cms.<name> # CMS list view for a blog (k9s-style)
make editor.cms.acme-alchemist # example
make editor.cms.leandronsp.com # example
make editor.run FILE=mypost.md # edit a single markdown file
make editor.build # release build only
make editor.test # editor testsRun make blog.list to see available blog names.
Position sync uses vim's titlestring (zero file I/O). Content sync debounced via CursorHold. Mode detected from the terminal title.
- All vim keybindings work
Ctrl+D/Ctrl+U-- half-page scrollG/gg-- top/bottomCtrl+P-- toggle preview paneCtrl+J/Ctrl+K-- scroll preview paneCtrl+F-- follow editor cursor in previewCtrl+L-- image upload picker (within a blog)Ctrl+O-- open HTML preview in browser:w-- save,:q-- quit
Multi-site static blog generator. See docs/BLOG_ENGINE.md for full documentation.
make blog.list # list available blogs
make blog.build # build all blogs
make blog.build.<name> # build one blog
make blog.serve.<name> # build and serve on localhost:8000
make blog.clean # remove dist/
make blog.theme.<name> THEME=paper|newspaper|terminal # switch theme
make deploy.cp.<name> # build and rsync to blog repoleandronsp.com -- built with DevTUI's blog engine using the paper theme.
make help # list all targets
make test # all tests + lint
make editor.test # editor tests only
make blog.test # engine tests only
make lint # clippy- ratatui + crossterm -- TUI framework
- portable-pty + vt100 + tui-term -- vim PTY embedding
- pulldown-cmark -- markdown parsing
- pulldown-cmark -- markdown to HTML
- toml + serde -- config parsing
- gh-emoji -- emoji shortcode conversion
- tiny_http -- local dev server
- rsync -- deploy only
brew install vim
# Rust toolchain via rustupAGPL-3.0
