{"id":18157121,"url":"https://github.com/rochacbruno/marmite","last_synced_at":"2025-05-14T13:00:33.944Z","repository":{"id":257826216,"uuid":"872582333","full_name":"rochacbruno/marmite","owner":"rochacbruno","description":"Markdown makes sites - A Static Site Generator for Blogs","archived":false,"fork":false,"pushed_at":"2025-04-02T18:50:44.000Z","size":9713,"stargazers_count":628,"open_issues_count":25,"forks_count":36,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-06T09:01:27.153Z","etag":null,"topics":["blog","blog-engine","cms","hacktoberfest","hacktoberfest-accepted","markdown","rust","rustlang","site","ssg","static","static-blog-generator","static-site","static-site-generator"],"latest_commit_sha":null,"homepage":"https://rochacbruno.github.io/marmite/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rochacbruno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":["rochacbruno"]}},"created_at":"2024-10-14T17:31:42.000Z","updated_at":"2025-04-04T18:58:46.000Z","dependencies_parsed_at":"2024-12-07T10:01:58.149Z","dependency_job_id":"4936177c-d8c3-48f4-b97f-8d68ed7f0bd7","html_url":"https://github.com/rochacbruno/marmite","commit_stats":{"total_commits":168,"total_committers":11,"mean_commits":"15.272727272727273","dds":0.5833333333333333,"last_synced_commit":"c5b18d8e4c398265dba8975f10afcbc3367f2253"},"previous_names":["rochacbruno/marmite"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rochacbruno%2Fmarmite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rochacbruno%2Fmarmite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rochacbruno%2Fmarmite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rochacbruno%2Fmarmite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rochacbruno","download_url":"https://codeload.github.com/rochacbruno/marmite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248550634,"owners_count":21122933,"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":["blog","blog-engine","cms","hacktoberfest","hacktoberfest-accepted","markdown","rust","rustlang","site","ssg","static","static-blog-generator","static-site","static-site-generator"],"created_at":"2024-11-02T06:05:23.985Z","updated_at":"2025-04-13T12:39:03.072Z","avatar_url":"https://github.com/rochacbruno.png","language":"Rust","funding_links":["https://github.com/sponsors/rochacbruno"],"categories":["Uncategorized","Projects using Tera","Rust","Libraries"],"sub_categories":["Uncategorized","Editor Support","Web programming"],"readme":"# Marmite\n\n\u003cimg src=\"https://github.com/rochacbruno/marmite/raw/main/assets/_resized/logo_160x120.png\" align=\"left\" alt=\"marmite\"\u003e\n\nMarmite [**Mar**kdown **m**akes s**ite**s] is a **very!** simple static site generator.\n\n[![AGPL License](https://img.shields.io/badge/license-AGPL-blue.svg)](http://www.gnu.org/licenses/agpl-3.0)\n[![Crates.io Version](https://img.shields.io/crates/v/marmite)](https://crates.io/crates/marmite)\n[![Docs and Demo](https://img.shields.io/badge/docs-demo-blue)](https://rochacbruno.github.io/marmite/)  \n  \n[![Create blog](https://img.shields.io/badge/CREATE%20YOUR%20BLOG%20WITH%20ONE%20CLICK-20B2AA?style=for-the-badge)](https://github.com/rochacbruno/blog)\n\n\n\u003e I'm a big user of other SSGs but it is frequently frustrating that it takes so much setup to get started.  \nJust having a directory of markdown files and running a single command sounds really useful.  \n\u0026mdash; Michael, marmite user.\n\n## How it works\n\nIt does **\"one\"** simple thing only:\n\n- Reads all `.md` files on the `input` directory.\n- Using `CommonMark` parse it to `HTML` content.\n- Extract optional metadata from `frontmatter` or `filename`.\n- Generated `html` file for each page.\n- Outputs the rendered static site to the `output` folder.\n\nIt also handles generating or copying `static/` and `media/` to the `output` dir.\n\n## Before you start, you should know\n\n1. Marmite is meant to be simple, don't expect complex features\n2. Marmite is for **bloggers**, so writing and publishing articles in chronological order is the main use case.\n3. The generated static site is a **flat** HTML site, no subpaths, all content is published in extension ending URLS ex: `./{name}.html|rss|json`\n4. There are only 2 taxonomies `tags:` (to group similar content together) and `stream:` (to separate content in a different listing) \n5. Marmite uses the `date:` attribute to differentiate `posts` from `pages`\n\n## Features\n\n- Everything embedded in a single binary.\n- Zero-Config to get started.\n  - optionally fully configurable\n- Common-mark + Github Flavoured Markdown + Extensions.\n- Raw HTML allowed.\n- Emojis `:smile:`, spoiler `||secret||`.\n- Wikilinks `[[name|url]]` and Obsidian links `[[page]]`.\n- Backlinks.\n- Tags.\n- Multi authors.\n  - Author profile page\n- Multi streams.\n  - Separate content in different listing\n- Pagination.\n- Static Search Index.\n- RSS Feeds.\n  - Multiple feeds (index, tags, authors, streams)\n- Built-in HTTP server.\n- Auto rebuild when content changes.\n- Built-in theme \n  - Light and Dark modes.\n  - Multiple colorschemes\n  - Fully responsive\n  - Spotlight Search.\n  - Easy to replace the index page and add custom CSS/JS\n  - Easy to customize the templates\n  - Math and Mermaid diagrams.\n  - Syntax Highlight.\n  - Commenting system integration.\n  - Banner images and `og:` tags.\n- CLI to start a new theme from scratch\n\n\n## Installation\n\nInstall with cargo\n\n```bash\ncargo binstall marmite\n```\nor\n\n```bash\ncargo install marmite\n```\n\nOr download the pre-built **binary** from the [releases](https://github.com/rochacbruno/marmite/releases)\n\n\n\u003cdetails\u003e\n\n\u003csummary\u003eOr use docker\u003c/summary\u003e\n\n\n\u003e [!IMPORTANT]  \n\u003e The directory containing your marmite project must be mapped to containers `/input`  \n\u003e If running inside the directory use `$PWD:/input` \n\u003e The result will be generates in a `site` folder inside the input dir.\n\nBuild\n```console\n$ docker run -v $PWD:/input ghcr.io/rochacbruno/marmite\nSite generated at: site/\n```\nServe (just add port mapping and the --serve)\n```console\n$ docker run -p 8000:8000 -v $PWD:/input ghcr.io/rochacbruno/marmite --serve\n```\n\n\u003e [!INFO]  \n\u003e By default will run `:latest`, Add `:x.y.z` with the version you want to run.\n\n\u003c/details\u003e\n\n## Usage\n\nIt's simple, really!\n\n```console\n$ marmite folder_with_markdown_files path_to_generated_site\nSite generated at path_to_generated_site/\n```\n\nCLI\n\n```console\n❯ marmite --help\nMarmite is the easiest static site generator.\n\nUsage: marmite [OPTIONS] \u003cINPUT_FOLDER\u003e \u003cOUTPUT_FOLDER\u003e\n\nArguments:\n  \u003cINPUT_FOLDER\u003e   Input folder containing markdown files\n  \u003cOUTPUT_FOLDER\u003e  Output folder to generate the site\n\nOptions:\n      --serve            Serve the site with a built-in HTTP server\n      --watch            Detect changes and rebuild the site automatically\n      --bind \u003cBIND\u003e      Address to bind the server [default: localhost:8000]\n      --config \u003cCONFIG\u003e  Path to custom configuration file [default: marmite.yaml]\n      --debug            Print debug messages Deprecated: Use -vv for debug messages\n      --init-templates   Initialize templates in the project\n      --start-theme      Initialize a theme with templates and static assets\n      --generate-config  Generate the configuration file\n  -v, --verbose...       Verbosity level (0-4) [default: 0 warn] options: -v: info,-vv: debug,-vvv: trace,-vvvv: trace all\n  -h, --help             Print help\n  -V, --version          Print version\n\n```\n\n## Getting started\n\nRead a tutorial on how to get started https://rochacbruno.github.io/marmite/getting-started.html and create your blog in minutes.\n\n\n## Docs \n\nRead more on how to customize templates, add comments etc on https://rochacbruno.github.io/marmite/ \n\n\n## That's all!\n\n**Marmite** is very simple.\n\nIf this simplicity does not suit your needs, there are other awesome static site generators.\n\n\nHere are some that I recommend:\n\n- [Cobalt](https://cobalt-org.github.io/)\n- [Zola](https://www.getzola.org/)\n- [Zine](https://zineland.github.io/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frochacbruno%2Fmarmite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frochacbruno%2Fmarmite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frochacbruno%2Fmarmite/lists"}