MCPcopy Index your code
hub / github.com/facundoolano/jorge

github.com/facundoolano/jorge @0.10.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.10.1 ↗ · + Follow
101 symbols 353 edges 15 files 37 documented · 37%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

jorge

A personal (small + opinionated) site generator with org-mode (and markdown) support.

Installation

Download the latest release binary for your platform, for example:

$ wget https://github.com/facundoolano/jorge/releases/latest/download/jorge-darwin-amd64  \
    -O jorge && chmod +x jorge && sudo mv jorge /usr/local/bin

Alternatively, install with go (make sure that $GOPATH/bin is in your path):

$ go install github.com/facundoolano/jorge@latest

ArchLinux users can use an AUR helper, such as yay, to install jorge directly from AUR:

$ yay -S jorge

Example usage

Create a new website with jorge init:

$ jorge init myblog
site name: My Blog
site url: https://myblog.olano.dev
author: Facundo Olano
added myblog/.gitignore
added myblog/includes/post_preview.html
added myblog/layouts/base.html
added myblog/layouts/default.html
added myblog/layouts/post.html
added myblog/src/assets/css/main.css
added myblog/src/blog/goodbye-markdown.md
added myblog/src/blog/hello-org.org
added myblog/src/blog/index.html
added myblog/src/blog/tags.html
added myblog/src/feed.xml
added myblog/src/index.html

This initializes a new project with default configuration, styles and layouts, and a couple of sample posts. (You can, of course, use a different site structure or just skip the init command altogether).

To preview your site locally, use jorge serve:

$ cd myblog
$ jorge serve
wrote target/feed.xml
wrote target/blog/goodbye-markdown/index.html
wrote target/blog/my-first-post/index.html
wrote target/blog/hello-org/index.html
wrote target/blog/index.html
wrote target/index.html
wrote target/blog/tags/index.html
serving at http://localhost:4001

The site is renders the files found at src/ in the target/ directory. You can add new pages by just adding files to src/ but, for the common case of adding blog posts, the jorge post creates files with the proper defaults:

$ jorge post "My First Post"
added src/blog/my-first-post.org
$ cat src/blog/my-first-post.org
---
title: My First Post
date: 2024-02-21 13:39:59
layout: post
lang: en
tags: []
draft: true
---
#+OPTIONS: toc:nil num:nil
#+LANGUAGE: en

(Posts are created as .org files by default, but you can chage it to prefer markdown or another text format).

If you still have jorge serve running, you can see the new post by browsing to http://localhost:4001/blog/my-first-post. You can then add some content and the browser tab will automatically refresh to reflect your changes:

$ cat >> src/blog/my-first-post.org <<EOF
*** Hello world!

this is my *first* post.
EOF

Posts created with jorge post are drafts by default. Remove the draft: true to mark it ready for publication:

$ sed -i '' '/^draft: true$/d' src/blog/my-first-post.org

Finally, you can render a minified version of your site with jorge build:

$ jorge build
  wrote target/index.html
  wrote target/assets/css/main.css
  wrote target/blog/hello/index.html
  wrote target/blog/my-first-post/index.html
  wrote target/feed.xml
  wrote target/tags/index.html

And that's about it. For more details see the:

Built with jorge

Acknowledgements

jorge started as a Go learning project and was largely inspired by Jekyll. Most of the heavy lifting is done by external libraries:

Core symbols most depended-on inside this repo

load
called by 13
site/site.go
Parse
called by 10
markup/templates.go
render
called by 10
site/site.go
NewEngine
called by 9
markup/templates.go
Render
called by 8
markup/templates.go
Prompt
called by 5
commands/commands.go
Load
called by 5
config/config.go
TargetExt
called by 4
markup/templates.go

Shape

Function 65
Method 25
Struct 11

Languages

Go100%

Modules by API surface

site/site.go17 symbols
site/site_test.go15 symbols
commands/serve.go12 symbols
markup/templates.go11 symbols
markup/templates_test.go9 symbols
markup/filters.go9 symbols
commands/commands.go5 symbols
markup/smartify.go4 symbols
markup/html.go4 symbols
config/config.go4 symbols
markup/minify.go3 symbols
commands/post.go3 symbols

For agents

$ claude mcp add jorge \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact