{"id":18090833,"url":"https://github.com/klml/drfly","last_synced_at":"2026-03-04T06:31:48.362Z","repository":{"id":53480111,"uuid":"168995713","full_name":"klml/drfly","owner":"klml","description":"static website generator powered by Python, YAML, Markdown and mustache","archived":false,"fork":false,"pushed_at":"2025-03-09T09:40:01.000Z","size":76,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T05:44:46.835Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/klml.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,"zenodo":null}},"created_at":"2019-02-03T21:29:54.000Z","updated_at":"2025-03-09T09:40:04.000Z","dependencies_parsed_at":"2024-01-16T20:32:48.191Z","dependency_job_id":"ecbb28c7-51b2-4a83-8047-b0345f00d12d","html_url":"https://github.com/klml/drfly","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/klml/drfly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klml%2Fdrfly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klml%2Fdrfly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klml%2Fdrfly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klml%2Fdrfly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klml","download_url":"https://codeload.github.com/klml/drfly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klml%2Fdrfly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30074145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-31T18:08:06.223Z","updated_at":"2026-03-04T06:31:48.341Z","avatar_url":"https://github.com/klml.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# drfly\n\nstatic website generator powered by Python, YAML, [Python-Markdown](https://python-markdown.github.io) and [mustache](https://github.com/defunkt/pystache).\n\nThere are many other and better [staticsitegenerators](http://staticsitegenerators.net), but I missed some features.\nSo drfly provides:\n\n* the __meta information__ for rendering (template, menue etc) or html metatags are defined\n    * in `./meta.yaml` in the contentroot, like configuration files in most other ssg like [hugo](https://gohugo.io/getting-started/configuration/).\n    * but __additionally__ in every directory (`meta.yaml`)\n    * or inside the page as [jekylleske front matter](https://jekyllrb.com/docs/front-matter/), but at the __bottom__ of the page and only __optional__ (tried to use my own standard [PROSErial](https://codeberg.org/klml/proserial)).\n* the document or __page title__ is defined with the __first H1__ and is optional.\nMost other ssg define the pagetitle in the front matter, but this is complicated and makes front matter mandatory. HTML headings, are part already a part of the document. So I need this:\n    * define [HTML Title element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title) ```\u003ctitle\u003e``` from first markdown heading as ```pagetitle``` if it is missing in meta (a function you have in [MkDocs](https://github.com/mkdocs/mkdocs/blob/master/docs/user-guide/writing-your-docs.md#meta-data)).\n    * [toc_depth range](https://python-markdown.github.io/extensions/toc/#usage) to exclude H1 from toc.\n* URLs with no mandatory trailing slash.\n* simple one-file templating with mustache, for plain websites. Even the simple [hugo layout templates](https://gohugo.io/templates/) drives me crazy.\nI would love using [Pandoc for this](https://wstyler.ucsd.edu/posts/pandoc_website.html).\n* include sourcefiles in templates (for menus, sidebars, trackingpixels). Instead of defining menus in abstract config files.\n* use source directories as __namespace__, with customizing namespaceseperators (```namespace:pagetitle```) and not only ```/```.\n* non .md files (```.css```, ```.js``` or ```.txt```) get rendered with newlines as breaks (```\u003cbr\u003e```).\n* create single pages, not always all pages at once.\n\n\nWhen I build sites for other people I use [hugo](https://gohugo.io/).\nBut then I miss ```[[```Wikilinks```]]``` from [Python-Markdown](https://python-markdown.github.io).\n\n\n## usage\n\n### cli\n\nChange to source directory and render all pages:\n```\ncd /path/to/source/\ndrfly \n```\n\nRender all pages from source directory:\n```\ndrfly /path/to/source/ \n```\n\nRender single page:\n```\ndrfly /path/to/source/index.md \n```\n\n### web\nYou can use git{hu|la}b as content webinterface and versioning system.\n\nGet new commits with [webhook.py](drfly/webhook.py) (depends on [webpy.org](http://webpy.org))\n\n```\npip3 install -r requirements-web.txt \npython3.6 drfly/webhook.py 8080 /path/to/source/\n```\n\n* Render a single page: `http://localhost:8080/render?page=index.md`\n* Render all pages, by setting \"webhook: renderall\" `true` in [config](#config) and: `http://localhost:8080/render?all`\n* Pull git repository and render all changed pages `curl -X PO http://localhost:8080/gitpull`\n\n\n### config\n\nThere is the global config [drfly/meta.global.yaml](drfly/meta.global.yaml).\nYou can overwrite this values with a file `meta.yaml` in the root-directory oder every sub-directory.\n\n## rendering\n\nDrfly renders html and json files with [Python-Markdown](https://python-markdown.github.io/) using [Markdown Extra](https://python-markdown.github.io/extensions/extra/) with [Table of Contents](https://python-markdown.github.io/extensions/toc/), [WikiLinks](https://python-markdown.github.io/extensions/wikilinks/), [Sane Lists](https://python-markdown.github.io/extensions/sane_lists/) and [Admonition](https://python-markdown.github.io/extensions/admonition/).\n\nYou can add [Third-Party-Extensions](https://github.com/Python-Markdown/markdown/wiki/Third-Party-Extensions) in [config](#config) `markdown: extensions:`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklml%2Fdrfly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklml%2Fdrfly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklml%2Fdrfly/lists"}