{"id":17114583,"url":"https://github.com/sjkingo/fantail","last_synced_at":"2025-03-23T23:42:59.781Z","repository":{"id":142705482,"uuid":"61762807","full_name":"sjkingo/fantail","owner":"sjkingo","description":"fantail is (yet another) static site generator written in Python","archived":false,"fork":false,"pushed_at":"2016-07-06T03:34:54.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-29T06:49:31.009Z","etag":null,"topics":["python","python-3","python-3-4","python-3-5","site-generator","static-site","static-site-generator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sjkingo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-23T01:20:04.000Z","updated_at":"2017-02-18T10:29:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"a247bf0c-a952-440f-abd0-768c313ae750","html_url":"https://github.com/sjkingo/fantail","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjkingo%2Ffantail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjkingo%2Ffantail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjkingo%2Ffantail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjkingo%2Ffantail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sjkingo","download_url":"https://codeload.github.com/sjkingo/fantail/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245186924,"owners_count":20574553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","python-3","python-3-4","python-3-5","site-generator","static-site","static-site-generator"],"created_at":"2024-10-14T17:19:25.014Z","updated_at":"2025-03-23T23:42:59.748Z","avatar_url":"https://github.com/sjkingo.png","language":"Python","readme":"# fantail\n\n[![Build Status](https://travis-ci.org/sjkingo/fantail.svg?branch=master)](https://travis-ci.org/sjkingo/fantail)\n[![Coverage Status](https://coveralls.io/repos/github/sjkingo/fantail/badge.svg?branch=master)](https://coveralls.io/github/sjkingo/fantail?branch=master)\n\nfantail is (yet another) static site generator written in pure-Python.\n\nIt is fast, extensible and requires zero configuration to use.\n\n## Why?\n\nThere are many different static site generators available to use. Not all of\nthem do a particularly good job, or contain features that detract from the\nsimple goal of generating a static website.\n\nfantail aims to change that by providing a simple, minimal site generator\nin pure-Python. It requires no configuration or complex setup: simply point\nit at a directory (the \"site\" source), add some content and 3 commands will\nhave a static site generated ready to upload to your favourite hosting site.\n\nIt is extensible through the use of plugins that can be used to extend the\ndefault functionality:\n\n* a [Markdown filter][https://github.com/sjkingo/fantail/blob/master/fantail/plugins/plugin_markdown.py]\n\n## Features\n\n* Fast, efficient generation of static pages\n* No database required\n* Minimal dependencies\n* Full test suite\n* Extensible through plugins\n* Markdown support (optional)\n\n## Requirements\n\n* Python 3.4 or 3.5\n* `jinja2`\n* Optional: `mistune` if you want to enable [Markdown][markdown-syntax] support\n\n[markdown-syntax]: https://daringfireball.net/projects/markdown/syntax\n\n## Installation\n\nInstallation is as simple as installing with `pip`:\n\n```\n$ pip install -e git+https://github.com/sjkingo/fantail.git\n```\n\nIt is recommended (but not required) you install the `mistune` library to\nprovide Markdown support:\n\n```\n$ pip install mistune\n```\n\nA full test suite is provided with 100% coverage:\n\n```\n$ pip install tox\n$ tox\n```\n\nThis script will attempt to install the test requirements if needed.\n\n\n## Usage\n\n1. `$ fantail init` - this will create a new site directory called `fantail-site`\n   in the current directory and populate it with some folders and files.\n\n2. Add some pages to the `fantail-site/pages` directory. For more information\n   on how to format these pages, see the **Page design** section, below.\n\n3. (Optionally) edit the templates in `fantail-site/templates`. A minimal\n   HTML5 template is provided to get you started, and will be used by default\n   if you do not specify a per-page template.\n\n4. Run `$ fantail build` and your pages will be parsed and a static site will\n   be generated.\n\nYou may run `fantail build` each time you modify a page or template and it will\nre-generate the site. If an error occurs during generation, a message will\nbe printed and any existing output (from a previous run) will not be lost -\nonly once the site is successfully generated is it copied over to the `output`\ndirectory.\n\nSee [this gist][example] for an example session.\n\n[example]: https://gist.github.com/sjkingo/d83a24184794db303d1e70998d7bd232\n\n## Page design\n\nA fantail site is made up of *input pages* that reside in the site's `pages`\ndirectory. Each page represents a single page on the site and must end with\nthe `.txt` extension to be recognised.\n\nEach file is split into two sections: the headers, and the content. Similar\nto an RFC2822-formatted email message, there is one header per line, separated\nby a colon, like so:\n\n```\ntitle: This is the title of this page\n```\n\nThere must not be a blank line between headers, as a blank line signifies the\nend of the headers and the beginning of the content, like so:\n\n```\ntitle: Happy Days\ntemplate: blog.html\n\nThis is the page's content that will be rendered.\n```\n\nAll headers will be added to the template context when generating, so you may\nadd as many different headers as you would like. See the **Templating** section\nfor more information.\n\n### Required headers\n\nThe only header required for successful parsing of a page is `title`: this is\nused as the `\u003ctitle\u003e` of the resulting page. It is also used in the RSS/Atom\ngeneration.\n\n### Optional headers\n\n`template`\n\nThe `template` header may be used to control which template file is used to\nrender the current page. By default if this header is missing, the `base.html`\ntemplate is used. An error is raised if the specified template cannot be found.\n\nMore information on the templates is available in the **Templating** section.\n\n## Templating\n\nfantail uses `jinja2` to generate its output and makes full use of its template\nsystem. Templates live in the `templates` directory inside a site, and the\ntemplate loader will look inside here when running.\n\nAll features of `jinja2`'s templating language can be used. For more information\nsee the excellent [templating documentation](http://jinja.pocoo.org/docs/dev/templates/).\n\n## Plugins\n\nSee the [plugins documentation][plugins-doc] for more information.\n\n[plugins-doc]: https://github.com/sjkingo/fantail/blob/master/fantail/plugins/README.md\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjkingo%2Ffantail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsjkingo%2Ffantail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjkingo%2Ffantail/lists"}