ranty.dev/@ranty_magazine
← All posts
git start guide

Getting started: write, configure, publish

2026-01-15 · 2 min read · @ranty_magazine
ranty — Magazine platform documentation
@ranty_magazine

ranty turns a Git repository into a blog. Connect a repo once and, from then on, every Markdown file you push becomes a post at ranty.dev/@you. No CMS, no web editor, no database you can't read — your content is plain files under version control.

The loop

Publishing is three commands:

git add posts/hello-world.md
git commit -m "new post"
git push origin main

ranty receives the push, syncs the repo and publishes. The commit log is your edit history; rolling a post back is git revert. Moving to another host is git clone, not begging for an export.

Writing a post

A post is a .md file: a small YAML frontmatter block, then your prose.

---
title: A boring deploy is a good deploy
date: 2026-05-30
tags: [ops, git]
excerpt: Why I stopped chasing clever pipelines.
status: published
---
Your **Markdown** goes here.

Every frontmatter field is optional:

  • title — else derived from the file name.
  • date — else the time of the first sync.
  • slug — else the file (or folder) name; it's the URL.
  • tags — a list or a comma-separated string; the first few show as pills.
  • excerpt — else auto-generated from the body.
  • statuspublished (default) or draft.

You get GitHub-flavoured Markdown — headings, lists, tables, task lists, footnotes — and fenced code blocks are highlighted with a copy button:

defmodule Hello do
def world, do: IO.puts("hi from a code block")
end

Headings automatically become the "On this page" table of contents.

Configuring your site: ranty.yml

How your public site looks is git-first too: a single ranty.yml at the root of your repo (not inside the posts folder).

display_name: "Mara Okafor"
role: distributed systems # short tagline next to your name
bio: I write about Git and boring tech that stays up.
avatar: assets/avatar.png # a committed image, like any other
template: minimal # minimal | archive | magazine
default_locale: en # en | pt
accent: "#5B8DEF" # a brand colour (hex)
links:
github: maraokafor
x: maraokafor
website: https://mara.dev

Push it and your live site picks it up. A missing or broken file never blanks your site — your last good config stays live and the error shows in Settings.

Your @handle is not set here: it's your account identity and URL (ranty.dev/@handle), managed in Settings, so no repository can claim someone else's handle. If you connect several repos, the config is read from your oldest (primary) one.

Next

Share

Related posts