Retro Garden is an open source Eleventy theme for personal sites that want IndieWeb publishing habits and early-web personality without giving up modern tooling. It mixes WebC components, palette switching, RSS, OG image generation, syntax highlighting, share links, and accessible defaults into one hand-made starter.
- Production demo: https://retro-garden-eleventy-theme.vercel.app
- Local development: http://127.0.0.1:8080
src/_data/site.js will use SITE_URL when you provide it and can also infer common preview URLs on Vercel, Netlify, and Cloudflare Pages. The production default is https://retro-garden-eleventy-theme.vercel.app, so swap that if you deploy under a different hostname.
- Eleventy 3 with current plugin wiring
- Eleventy Fetch for friendly remote-data caching
- Build-time OG image generation
- Nunjucks shortcodes and markdown-first authoring
- Accessible defaults with a
pa11y-ciaudit script - Tailwind CSS 4 plus custom retro component styles
- RSS and JSON feeds
- Eleventy WebC components
- is-land powered progressive enhancement
- Read time on journal posts
- Slugify-based clean tag URLs
- Official Eleventy syntax highlighting
- Post share links with copy-to-clipboard support
- Optional sidebars on pages and posts
- Built-in palette switching for Ember, Surf, and Mint
git clone <your-repo-url> retro-garden
cd retro-garden
npm install
npm run startOpen http://127.0.0.1:8080 to preview the theme locally.
npm run startstarts Eleventy in serve mode and Tailwind in watch modenpm run buildcreates the production build in_site/npm run audit:a11yruns Pa11y against the built site
- Update the site identity in
src/_data/site.js. - Replace the sample pages in
src/and the demo posts insrc/posts/. - Choose your default palette and tweak the alternates to suit your brand.
- Edit the layouts in
src/_includes/layouts/to remove or expand theme features. - Update social links, sponsor links, and author metadata before publishing.
src/_data/site.jsstores the main site identity, navigation, palettes, and social linkssrc/_includes/layouts/base.njkcontrols the shared shell, header, footer, and metadatasrc/_includes/layouts/page.njkrenders full-width pages with an optional sidebarsrc/_includes/layouts/post.njkrenders journal posts, share links, and the author panelsrc/_includes/partials/share-links.njkcontains the reusable share sectionsrc/_includes/components/*.webccontains the reusable WebC componentssrc/assets/css/theme.cssholds the design tokens and component stylingsrc/style-guide.njkshows palettes, UI patterns, and syntax-highlight examplesvercel.jsonis included as an optional Vercel preset for the generated_site/folder
Retro Garden is a static Eleventy theme, so it can be deployed anywhere that can run npm run build and publish the _site/ folder.
- Install dependencies with
npm install - Build the site with
npm run build - Publish the
_site/directory on your host - Set
SITE_URLto your production domain so feeds, canonicals, and OG metadata use the correct URL
- Vercel:
vercel.jsonis already included. SetSITE_URLin project environment variables. - Netlify: build command
npm run build, publish directory_site, and setSITE_URL. - Cloudflare Pages: build command
npm run build, output directory_site, and setSITE_URL. - GitHub Pages or any other static host: run
npm run buildin CI and publish_site/.
Preview deployments will render cleanly on common platforms because the theme can infer several host-provided preview URLs when SITE_URL is not set.
- Pages are full width by default and only render a sidebar when you add
sidebarTitleandsidebarin front matter. - Posts include a share row after the article body and before the author panel.
- The palette picker in the header uses query-string links, so you can preview each palette on any route.
- The style guide and sample posts intentionally show markdown, code fences, badges, and optional layout patterns.
If Retro Garden helps you ship something fun, you can support its maintenance here. Replace the placeholder handles before publishing your own fork. GitHub's funding button can be configured in .github/FUNDING.yml.
- GitHub Sponsors: https://github.com/sponsors/kylereddoch
- Ko-fi: https://ko-fi.com/kylereddoch
- Buy Me a Coffee: https://buymeacoffee.com/kylereddoch
Issues and pull requests are welcome. For changes that touch templates, styles, or build behavior, please run:
npm run build
npm run audit:a11yWhen contributing, try to preserve the balance between readable content surfaces, playful retro chrome, and accessible defaults.
MIT. See LICENSE.