ranty
docs

Your blog is a git repo.

Connect a repository and every Markdown file with YAML frontmatter becomes a post. No CMS, no editor — write, push, done. Everything below is just files in your repo.

01 / writing posts

A post is a .md file. The YAML frontmatter sets the title, date and tags; everything else is your prose.

---
title: A boring deploy is a good deploy
date: 2026-05-30
tags: [ops, git]
status: published
---

Your Markdown body goes here.

02 / images and covers

Make a folder for the post with an index.md inside — the folder name is the slug. A cover.png next to it becomes the hero image and list thumbnail; reference other images with relative paths. ranty stores the bytes on sync.

posts/getting-started/
  index.md
  cover.png          # auto-detected cover + thumbnail
  diagram.png        # ![Diagram](./diagram.png)

PNG, JPEG, WebP, GIF or AVIF. No SVG. Up to 2 MB per image.

03 / your site config

A ranty.yml at the repo root controls how your site looks: name, bio, avatar, template and accent. Your @handle is not set here — it is your account identity, managed in Settings.

display_name: "Mara Okafor"
role: distributed systems
bio: I write about Git and boring tech.
avatar: assets/avatar.png
template: minimal        # minimal | archive | magazine
default_locale: en       # en | pt
accent: "#5B8DEF"
links:
  github: maraokafor
  website: https://mara.dev
analytics:               # Pro
  ga4: G-XXXXXXXXXX
  plausible: mara.dev

see the templates live

Every template from the template: key above is a live demo blog — open any of them to explore.

04 / bilingual posts

Add a language tag before the extension to publish a post in two languages. ranty serves the variant that matches the visitor, falling back to the original with a small note. A file with no tag is a single, language-neutral post.

posts/getting-started.en.md
posts/getting-started.pt.md   # same slug, two languages

05 / drafts

Set status: draft (or draft: true) to keep a post unpublished. Only you can preview it, at its real URL; visitors get a 404 until you publish.

06 / featured posts

Set featured: true in a post's frontmatter to pin it at the top of your index. Templates list featured posts first, and the magazine template uses the featured post as its hero.

---
title: My best post
featured: true
---

Pro: file-based themes

Want full control of the HTML? Ship Liquid templates in your repo.

Themes →