A static blog generator and an offline blogging tool.
Fatafat is a minimalistic static blog generator written in Python. It is also an offline blogging tool with simple and quick publishing options.
To install fatafat, simply:
$ pip install fatafat
Make sure that git is installed.
Fatafat pushes to the repository github_username.github.io. Make sure that the empty repository (DO NOT create the readme or the .gitignore files) is created before you use Fatafat.
I say why not! “Fatafat” means “quick” in Hindi.
Currently, Fatafat is a “toddler” project and barely stands! But I have honest plans for it. I am developing it actively and using it for my own blog.
Incase you run into issues, please log the same.
If you find the project useful, why not look into the issues yourself and send pull requests!
When installed, fatafat command is available for use. This command can be used to perform various actions on the blog. Run fatafat --help for details. To get help on individual action, run fatafat <action> --help. Note that the fatafat command must be run at the root of the directory which contains your blog.
This cheatsheet lists all possible actions that can be performed using the fatafat command.
First create the empty Github repository github_username.github.io.
To create a new blog in bubblewrap directory:
$ mkdir bubblewrap $ cd bubblewrap $ fatafat start
The start option prompts the user for blog configuration details. The following details are requested:
Once done, the following directories will be created:
bubblewrap |-- contents |-- prod |-- dev
All articles go into the contents directory. The directory structure for prod and dev is same and stores the production version and the development version of the blog.
|-- config.py # blog configuration file |-- data # blog data files |-- site # static output | |-- README.md | |-- articles # generated HTML files for articles | |-- assets # css, js files |-- themes | |-- simi | | |-- assets # css, js files | | |-- templates # jinja2 templates
There are few important differences between the dev and the prod directory.
To add a new article, simply create a new file with .md extension under contents. Articles belonging to a common theme can be grouped in a directory. E.g.
$ cd bubblewrap $ vim contents/loner.md $ vim contents/python/meta_what.md $ vim contents/python/why_should_i_decorate.md
Each article has associated metadata, some required and some optional. The metadata starts from the first line of the document and is separated from the article content by a blank line.
E.g. contents/loner.md can look like -
Title: I am a lonely article Summary: My story Date: 27-07-1983 Status: draft I am lonely, because I am at the root!
Title and Date are required. Currently Date must be in DD-MM-YYYY format. Support for other formats could be added later.
Summary and Status are optional. If Status is absent, the article is considered to be published.
To publish an article, cd to the root of the blog directory and run fatafat publish -f <rel_path_to_article> in terminal. E.g -
$ cd <path_to_blog> $ fatafat publish -f contents/loner.md
The above command will update the local development blog only. To update the production blog specify option --prod. To push the changes to Github, specify option --sync. See cheatsheet for more details.
$ cd <path_to_blog> $ fatafat publish -f contents/loner.md --prod --sync
To publish more than one article, pass the relative paths of the all the articles to the fatafat publish -f command. E.g -
$ cd <path_to_blog> $ fatafat publish -f contents/loner.md contents/python/meta_what.md
To publish all articles, simply use fatafat publish. E.g -
$ cd <path_to_blog> $ fatafat publish
Currently, removing an article or renaming a markdown file isn’t handled entirely correctly. The HTML file generated for the deleted/renamed article remains in the site directory and has to be removed manually.
This is on the top of my list of TODOs. So it should be addressed soon.
Currently Fatafat comes with the default theme simi. But you add new themes easily.
The following variables are available in template article.jinja2:
The following variables are available in template index.jinja2:
The following variables are available in all templates:
You might have observed that the template variables names matches to those in Pelican. The goal is to make pelican themes compatible with fatafat.
The fatafat command must be run at the root of the directory which stores the blog files. The following commands can be run in terminal to perform various actions on the blog:
# Create a new blog $ fatafat start # Publish all articles to dev directory $ fatafat publish # Publish a single article to dev directory $ fatafat publish -f contents/article1.md # Publish multiple articles to dev directory $ fatafat publish -f contents/article1.md contents/group/article2.md contents/article3.md # Publish all articles to prod directory $ fatafat publish --prod # Publish all articles to prod directory and sync with remote host $ fatafat publish --prod --sync # Publish a single article to prod directory $ fatafat publish -f contents/article1.md --prod # Publish a single article to prod directory and sync with remote host $ fatafat publish -f contents/article1.md --prod --sync # Publish multiple articles to prod directory $ fatafat publish -f contents/article1.md contents/group/article2.md --prod # Publish multiple articles to prod directory and sync with remote host $ fatafat publish -f contents/article1.md contents/group/article2.md --prod --sync
Send me a message at “i DOT subhajit DOT ghosh AT gmail DOT com” with any feedback.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|File Name & Checksum SHA256 Checksum Help||Version||File Type||Upload Date|
|fatafat-0.0.2-py2.py3-none-any.whl (20.4 kB) Copy SHA256 Checksum SHA256||2.7||Wheel||May 12, 2014|
|fatafat-0.0.2.tar.gz (14.1 kB) Copy SHA256 Checksum SHA256||–||Source||May 12, 2014|