{"id":24321073,"url":"https://github.com/jowi-dev/publisher","last_synced_at":"2026-02-13T07:32:44.531Z","repository":{"id":272069708,"uuid":"915435794","full_name":"jowi-dev/publisher","owner":"jowi-dev","description":"A repository for generating static sites from markdown notes I've taken","archived":false,"fork":false,"pushed_at":"2025-03-03T16:59:53.000Z","size":963,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T12:46:42.588Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hexdocs.pm/publisher/Publisher.html","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jowi-dev.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":"2025-01-11T20:52:33.000Z","updated_at":"2025-03-03T16:59:56.000Z","dependencies_parsed_at":"2025-02-21T15:39:57.549Z","dependency_job_id":null,"html_url":"https://github.com/jowi-dev/publisher","commit_stats":null,"previous_names":["jowi-dev/publisher"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jowi-dev%2Fpublisher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jowi-dev%2Fpublisher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jowi-dev%2Fpublisher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jowi-dev%2Fpublisher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jowi-dev","download_url":"https://codeload.github.com/jowi-dev/publisher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248789863,"owners_count":21161907,"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":[],"created_at":"2025-01-17T16:31:07.017Z","updated_at":"2026-02-13T07:32:39.459Z","avatar_url":"https://github.com/jowi-dev.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Publisher\n\nA Static site builder that makes generating html for GitHub Pages as easy as writing markdown.\n\n## Why?\n\nI think there is an underserved niche of people who just want to write markdown and have an easy way to make a website.\nGitHub pages is great for publishing simple content, but needs simple front end rendered content to avoid a constant headache.\nPublisher aims to give a way to write html once, and render markdown into that HTML template. Follow the simple format\n\n```markdown\n%{\n title: \"Awesome Blog\",\n author: \"Mrs. Writer\",\n date: \"01/18/25\",\n published?: true\n}\n---\n# My awesome blog post\n\nThis is super important, and also markdown\n```\n\nThen, your HTML can be rendered in a familiar HTML-like feel\n```\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\u003chead\u003e\n  \u003ctitle\u003e#{post.title}\u003c/title\u003e\n  \u003cmeta charset=\"utf-8\"\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n  \u003carticle\u003e\n    \u003ch1\u003e#{post.title}\u003c/h1\u003e\n    \u003cspan\u003e#{post.author} #{post.date}\u003c/span\u003e\n    \u003cdiv class=\"content\"\u003e\n      #{post.body}\n    \u003c/div\u003e\n  \u003c/article\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n\nIf you would like to override the default rendering function, simply add a config function that accepts a %Publisher.Article{} and returns the HTML as a string.\n```elixir\nconfig Publisher,\n    render_post: MyApp.render_post/1,\n    render_index: MyApp.render_index/1,\n    article_path: \"~/path/to/my/articles\",\n    output_path: \"~/path/to/my/gh-pages/repo\"\n```\n\nThe `published?` flag is a way to leave your work unpublished without needing to move it out of the directory at compile time. Simply flip the boolean from false to true when ready.\n\nAll articles are regenerated when `Publisher.Blog.generate_site/1` is called\n\n\n### Summary\n\nIn short I wrote this project to be a runtime based NimblePublisher, so I could write it as an escript and generate articles as I write them.\n\n\n### Roadmap\n- [ ] HexDocs done\n- [ ] Themes initialized with examples\n- [ ] Behaviour added for overriding `render_index` and `render_post` with examples\n- [ ] implement optional publishing via `published?`\n\n## Installation\n\nIf [available in Hex](https://hex.pm/docs/publish), the package can be installed\nby adding `publisher` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:publisher, \"~\u003e 0.1.0\"}\n  ]\nend\n```\n\nDocumentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)\nand published on [HexDocs](https://hexdocs.pm). Once published, the docs can\nbe found at \u003chttps://hexdocs.pm/publisher\u003e.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjowi-dev%2Fpublisher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjowi-dev%2Fpublisher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjowi-dev%2Fpublisher/lists"}