firn

Org Mode Static Site Generator

EPL-1.0 License

Stars
323

#+html: Firn #+html: A Static Site Generator for Org Mode #+html:    

  • What's Firn?
    Firn generates a static site from org-mode files. It is a bit different from other static site generators, in that it intends to be a drop in solution for creating sites from already existing folders of org-files. Further, because org-mode has great capacity for collecting and displaying different kinds of data (links, logbooks, drawers, task keywords, tags, etc) we can make this data available when org-content is parsed into a data structure.

Currently, running the firn binary on a directory of org files performs the following:

  • Reads all .org files in the directory recursively.
  • Parses org-files into data structures with the lovely [[https://github.com/PoiScript/orgize][Orgize]].
  • Collects all file links, tags and logbooks across all files.
  • Passes files through a template system called [[https://github.com/Keats/tera][Tera]], and renders to HTML.
  • How do I use it?
  • Download the latest binary from the Github Releases page.
  • Add the binary to your path, or use the =-d= flag to pass a directory to Firn

#+begin_src

navigate to a directory that has some org-files in it, then

scaffold out a site:

firn new

go explore what was generated:

ls -la _firn

start a server and go looking for your files:

if you have an org file called 'foo.org' it will become 'foo.html' etc.

firn serve

ready to build the output?

firn build #+end_src

Read the full usage documentation [[https://theiceshelf.com/firn.html][here]].

  • Development & Contributing
  • Rust version =1.58.0=
  • see =Makefile= commands.
  • You'll need a folder of Org files to test on.

A small roadmap can be found [[https://theiceshelf.com/firn.html#Roadmap][here.]]

  • Limitations
    ** Development Server

The development server is quite naive. There is no caching or diffing in the replacement of changed assets in the /static or /data folder. ** Footnotes Due to how the parser parses footnotes, they must look like so: #+begin_src [fn:1]

Not like this:

#+begin_src

[fn:1]

#+end_src