All Projects → 2016rshah → Heckle

2016rshah / Heckle

✒️ Jekyll in Haskell (feat. LaTeX)

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Heckle

Gojekyll
A fast clone of the Jekyll blogging engine, in Go
Stars: ✭ 62 (-22.5%)
Mutual labels:  jekyll, static-site-generator, blog-engine
Jekyll
🌐 Jekyll is a blog-aware static site generator in Ruby
Stars: ✭ 43,803 (+54653.75%)
Mutual labels:  jekyll, static-site-generator, blog-engine
Zola
A fast static site generator in a single binary with everything built-in. https://www.getzola.org
Stars: ✭ 7,823 (+9678.75%)
Mutual labels:  static-site-generator, blog-engine
Nextein
A static site generator with markdown + react for Next.js
Stars: ✭ 825 (+931.25%)
Mutual labels:  static-site-generator, blog-engine
Ink
An elegant static blog generator
Stars: ✭ 950 (+1087.5%)
Mutual labels:  static-site-generator, blog-engine
Wowchemy Hugo Modules
🔥 Hugo website builder, Hugo themes & Hugo CMS. No code, build with widgets! 创建在线课程,学术简历或初创网站。
Stars: ✭ 6,093 (+7516.25%)
Mutual labels:  static-site-generator, blog-engine
Forty Jekyll Theme
A Jekyll version of the "Forty" theme by HTML5 UP.
Stars: ✭ 695 (+768.75%)
Mutual labels:  jekyll, static-site-generator
Jekyll Scholar
jekyll extensions for the blogging scholar
Stars: ✭ 872 (+990%)
Mutual labels:  jekyll, static-site-generator
Gostatic
Fast static site generator
Stars: ✭ 387 (+383.75%)
Mutual labels:  static-site-generator, blog-engine
Ng Static Site Generator
ng-static-site-generator is a webpack-based command line build tool that builds an Angular app and Jekyll-style blog entry html files into a static html and css website. It also supports building a client app so you can have static pages that are also capable of running dynamic functionality coded in Angular.
Stars: ✭ 42 (-47.5%)
Mutual labels:  jekyll, static-site-generator
Bengine
A Simple Data-Driven static site generator
Stars: ✭ 34 (-57.5%)
Mutual labels:  static-site-generator, blog-engine
Awesome Docs With Static Site Generators
Pointers to all templates and implementations based on static site generators
Stars: ✭ 44 (-45%)
Mutual labels:  jekyll, static-site-generator
Pretzel
A site generation tool (and then some) for .NET platforms
Stars: ✭ 592 (+640%)
Mutual labels:  jekyll, static-site-generator
Jekyll Lunr Js Search
[UNSUPPORTED] Jekyll + lunr.js = static websites with powerful full-text search using JavaScript
Stars: ✭ 536 (+570%)
Mutual labels:  jekyll, static-site-generator
Glim
Static site generator which is semi-compatible with Jekyll
Stars: ✭ 76 (-5%)
Mutual labels:  jekyll, static-site-generator
Assemble
Community
Stars: ✭ 3,995 (+4893.75%)
Mutual labels:  static-site-generator, blog-engine
Thenewdynamic.org
Resources for Designers and Developers using the JAMstack
Stars: ✭ 24 (-70%)
Mutual labels:  jekyll, static-site-generator
Beautiful Jekyll
✨ Build a beautiful and simple website in literally minutes. Demo at https://beautifuljekyll.com
Stars: ✭ 3,778 (+4622.5%)
Mutual labels:  jekyll, static-site-generator
Vuepress
📝 Minimalistic Vue-powered static site generator
Stars: ✭ 19,730 (+24562.5%)
Mutual labels:  static-site-generator, blog-engine
Jekyll Pug
Jekyll Plugin That Allows You To Use Pug
Stars: ✭ 30 (-62.5%)
Mutual labels:  jekyll, static-site-generator

Heckle

An easy to use static-site compiler written in Haskell that supports LaTeX/PDF and Markdown/HTML posts. Care has been taken to make it as simple and unopinionated as possible.

In other words Heckle is basically Jekyll in Haskell (feat. LaTeX).

Why

Want to use Markdown? Cool. Want to use LaTeX? Cool. Want to use both? Cool.

Also, Jekyll was too OP for my taste. I just wanted to throw some posts in a directory and be ready to roll. My own blog uses Heckle with a ported version of The Hyde Theme so it looks like a Jekyll blog, it's more simple to maintain, and it supports LaTeX posts.

Requirements

For OSX

For everybody else

How To

First you need to install Heckle.

  • If you have a mac the easiest way to do so is by running brew install 2016rshah/tools/heckle
  • Alternatively if you want to develop heckle I suggest installing by running stack update && stack install heckle.

After you have heckle installed create the directory you want your blog to be based in (mkdir blog), initialize a git repository, etc.

When you're ready, from inside your new directory run heckle init. That will create a skeleton file structure.

Now finally you can do heckle build to generate your site. If that succeeds, you will have the example blog up and running!

It'll look a little like this:

.
├── index.html
├── index.html.hkl
├── template.html.hkl
└── posts
    ├── example-latex.pdf
    ├── example-latex.tex
    ├── example-markdown.html
    └── example-markdown.md

Customizing

At this point, if you open the resulting index.html file, everything will look pretty awful. But luckily, you can customize just about everything.

(Also, if you want to get up and running quickly with the Hyde theme, follow the instructions in this README. It will look like my blog rather than just the skeleton and you can edit things from there.)

Homepage

The index.html.hkl will basically be the layout you want for the homepage of your blog. Just make sure it is a valid HTML file (with Javascript, CSS, whatever you want) and make sure to keep the following HTML element wherever you want the list of your blog posts to go:

<ul id="blog-posts"></ul>

Each blog post will be an li element (with the class blog-post) containing an a tag to the post and a div with the date. Heckle will generate something like this:

<li class="blog-post">
    <a class="post-link" href="posts/example-post.pdf">
        Example Post
    </a>
    <div class="post-date">
        1 January 2015
    </div>
</li>

LaTeX Posts

Heckle will find all the .tex and .pdf file pairs in the posts/ directory and aggregate links to them in your homepage. You will need to compile them yourself (with pdflatex probably) just like you normally would and make sure the resulting PDFs look nice.

You need to ensure that you include a \title and a \date in the preamble of every LaTeX file:

\date{1 January 2015}
\title{Example LaTeX Post}

Valid date formats are outlined below.

When you're satisfied, you can run heckle build again to update the blog.

Markdown Posts

The template.html.hkl file is basically the layout file for your Markdown blog posts. Just make sure it is a valid HTML file (with Javascript, CSS, whatever you want) and make sure to keep the following HTML element wherever you want your blog post content:

<div id="blog-post"></div>

You need to ensure that you include specific commented meta-data including the title, author, and date in every Markdown file. The first three lines of each markdown file need to be formatted as follows:

% <TITLE>
% <AUTHOR>
% <FORMATTED-DATE>

Valid date formats are outlined below.

Heckle will find all the .md files and convert them to .html with the help of Pandoc. Then it will insert the resulting HTML into your template.html.hkl file at the specified location. Finally, it aggregates links to all the posts in your homepage.

When you're satisfied, you can run heckle build again to update the blog.

Valid Date Formats

These are the valid date formats:

  • 1 January 2016
  • January 1, 2016
  • 9:47AM 1 January 2016
  • 9:47AM January 1, 2016

Feel free to mix and match between the formats. If you would like to support a different date format, let me know by opening an issue.

BlaTeX ?

This project used to be called BlaTeX and was specifically for LaTeX/PDF posts (it did not support Markdown/HTML). It was created over the course of my senior year in high-school as my senior research project. Eventually I decided to support Markdown as well and thus Heckle was born.

See also:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].