A minimal Rails blog that reads posts and pages from markdown files and ships as a static site with Parklife on GitHub Pages.
- Rails 8 with no database-backed features enabled
importmap-railsandturbo-railsfor the default Rails JavaScript stacktailwindcss-railsfor stylingkramdownfor markdown renderingparklifeandparklife-railsfor static export
Posts live in content/posts and use this frontmatter:
---
title: Starting With Rails and Markdown
slug: starting-with-rails-and-markdown
publish_date: 2026-04-04
tags:
- rails
- ai-engineering
---Create a new post skeleton with:
bin/create-post your-post-slugPages live in content/pages and use:
---
title: About
slug: about
---Routes:
/lists posts/feed.xmlserves the RSS feed/posts/:slugshows a post/:slugshows a page/tags/:slugshows the tag archive
Page slugs reserve posts, tags, and up, and generated routes are validated for uniqueness.
Install gems:
bundle installRun Rails:
bin/rails serverTurbo is enabled through importmap in app/javascript/application.js, and link prefetching is left at Turbo's default behavior.
Run Tailwind in watch mode in another terminal:
bin/rails tailwindcss:watchOr run both together with:
bin/devRun tests:
bin/rails testGenerate the static site locally:
bin/static-buildThe exported site is written to build/.
If you want feed links to use a specific absolute URL locally, set SITE_URL before building or running the app.
The workflow at .github/workflows/parklife.yml builds the app with Parklife and deploys the build/ output to GitHub Pages when main is updated.