go-grip
Render your markdown files local
- with the look of GitHub
Table of Contents
β About
go-grip is a lightweight, Go-based tool designed to render Markdown files locally, replicating GitHub's style. It offers features like syntax highlighting, dark mode, and support for mermaid diagrams, providing a seamless and visually consistent way to preview Markdown files in your browser.
This project is a reimplementation of the original Python-based grip, which uses GitHub's web API for rendering. By eliminating the reliance on external APIs, go-grip delivers similar functionality while being fully self-contained, faster, and more secure - perfect for offline use or privacy-conscious users.
β‘ Features
- β‘ Written in Go π
- π Render markdown to HTML and view it in your browser
- π± Dark and light theme
- π¨ Syntax highlighting for code
- Todo list like the one on GitHub
- Support for github markdown emojis π
- Support for mermaid diagrams
- hashtag linking in page (see table of contents)
- math expressions (code, inline, block)
- gh issues and prs #46 and grafana/grafana#22
- toggle state is preserved in sessionStorage
This is an inline $\sqrt{3x-1}+(1+x)^2$ function.
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
package main
import "github.com/chrishrb/go-grip/cmd"
func main() {
fmt.Sprintln("Welcome to Grip! Use `go-grip --help` for more information.")
}
[!TIP]
Support of blockquotes (note, tip, important, warning and caution) see here
[!IMPORTANT]
test
π Getting started
To install go-grip, simply:
go install github.com/chrishrb/go-grip@latest
[!TIP]
You can also use nix flakes to install this plugin.
More useful information here.
π¨ Usage
To render the README.md file simply execute:
go-grip README.md
# or
go-grip
The browser will automatically open on http://localhost:6419. You can disable this behaviour with the -b=false option.
You can also specify a port:
go-grip -p 80 README.md
or just open a file-tree with all available files in the current directory:
go-grip -r=false
It's also possible to activate the darkmode:
go-grip -d .
To disable automatic browser reload on file changes (useful for stable editing):
go-grip --no-reload README.md
To terminate the current server simply press CTRL-C.
π Examples
π Known TODOs / Bugs
This tool is a Go-based reimplementation of the original grip, offering the same functionality without relying on GitHub's web API.