Hello world
The example post that ships with the blog. Delete it and write your own.
What does it take to publish a post here? One file, and no database.
The short version: create a markdown file in content/posts/, give it the front matter above, and
commit. There is no admin interface, no editor to log into, and nothing to click. Your writing is
reviewed, versioned, and deployed exactly like your code.
Why it works this way
A blog stored in the database needs an admin interface, and an admin interface needs authentication, authorization, an editor, image uploads, and a draft workflow. That is a real product, and it is not the product you are building.
Files skip all of it. You already have a text editor, and you already have code review.
What you get for free
Every post published here also gets:
- A canonical URL, so search engines index one address per post.
- OpenGraph and Twitter card tags, so links unfurl properly when shared.
BlogPostingstructured data, so search results can show the author and date.- An entry in
/sitemap.xml,/feed.xml,/feed.json, and/llms.txt. - A raw markdown version at
/blog/hello-world.md, which AI crawlers can read directly.
Writing the post itself
Standard markdown. Headings, lists, tables, and fenced code blocks all work, and code is highlighted on the server, so no JavaScript runs on the page:
class BlogPost
def to_param = slug
end
Start your headings at ##. The # level is the post title, and it is rendered from the front
matter, not from the body.
Next
Delete this file and writing-your-first-post.md, then write something only you can write. The posts
that earn search traffic are the ones answering a question where you are the best available source.