Static site generator
75b2789b — Louis Solofrizzo 4 years ago
defs: Update submodule
81ec9331 — Louis Solofrizzo 4 years ago
README: Update README with more informations and up-to-date urls
28bb9614 — Louis Solofrizzo 4 years ago
CMake: Add release CMake and instructions


browse  log 



You can also use your local clone with git send-email.


Generate an HTML static site from markdown sources - Complete article


git clone https://git.mobley.ne02ptzero.me/~louis/shayla --recursive

#Compile and Install

cd shayla/ && mkdir build && cd build && cmake .. && make && sudo make install

#Packaged versions

Archlinux user can get the binaries through the AUR packages shayla or shayla-git


You can get the binary directly here

#Using Shayla

Usage: shayla -[vhtsldrfuit]
Generate an HTML static site for markdown sources.
If used with no options, shayla will look for directory in the current path.

  -v, --version            Print software version
  -h, --help               Show this message
  -t, --title=TITLE        Title to be used in the final site
  -s, --src=DIR            Markdown sources directory
  -c, --style=DIR          Style sources directory
  -l, --layouts=DIR        Layouts directory
  -d, --dest=DIR           Destination directory
  -r, --root=ROOT          Root URL of the website
  -f, --favicon=FILE       Favicon to use
  -u, --url=URL            Url of the website
  -i, --img=DIR            Images directory
  -t, --threads=NUM        Number of threads to launch
      --debug              Print more information

Here's the 'required' tree for Shayla:

├── img
├── layouts
│   ├── footer.html
│   ├── header.html
│   └── intro.html
├── markdown
└── styles

'required' is quoted because directories can have any names, could be at any place on your filesystem. This is just the default setup.

  • img is the directory where you are to store all your images. You can reference them by using ![My super image](img/my_super_image.png) in your pages.
  • layouts is the directory where you are to store the template files of your sites. header.html and footer.html are pretty much self explanatory, and intro.html is what it is displayed on the index.html page, juste above the articles.
  • markdown is where you are to store your pages, in markdown.
  • styles is where you are to store your .css files.

There is no shayla init. I think you can manage creating 4 directories by yourself.


A little header is required at the beginning of every post:

title: My first Article
summary: This is my first article

These 2 are required for every post. Here's a complete list of all the options:

  • route: Future route name of the article. It will be displayed as route.html is the final site. It is up to you to handle duplicates.
  • summary: A one-line quick summary of the article, It is used for link title and RSS generation.
  • title: Title of the article
  • date: Date of the article in YYYY-MM-DD format. If this option is not here, shayla will look for the last modified timestamp from the filesystem in order to establish a chronology.
  • list: Boolean option, whether or not the article should be listed on the index.html. Default is true.
#Building the website
$> shayla --title "My site title" \
    --dest /var/www/htdocs/blog \
    --favicon ~/Pictures/blog_favicon.ico \
    --url "https://blog.ne02ptzero.me"