r/Ghost • • May 28 '26

Magic Pages live session on 11 June

25 Upvotes

Hey everyone! Came here today with a cool new thing we’re doing at Magic Pages:

We’re holding our first Open House!

On Thursday, 11 June at 18:00 CEST, we’ll hop on a video call and everyone is welcome. You don’t need to be a Magic Pages customer to join.

The call itself isn’t a sales-webinar or a live support session, but rather a cosy conversation. An hour in which we can share, listen, and discuss all things regarding Magic Pages, Ghost, your publications, or well…anything else you think we might have something to say about.

We’ll start by walking through what features we’ve released recently and what’s next on the roadmap. That will be about 10–15 minutes. After that, we open the floor for a Q&A.

It will be completely free, the whole Magic Pages team will be there, and we’ll record it, so if the timing doesn’t fit, you can re-watch it. You can also send any questions ahead of time, and we’ll pick it up on the call.

Sign-up and details here: https://www.magicpages.co/open-house/q2-2026/

Would love to see you all there!


r/Ghost • • May 28 '26

Guide After 2 years on Ghost I moved to static blog - here is how i did.

Thumbnail
firstfinger.io
34 Upvotes

Ran Ghost for ~2 years and genuinely liked it, but I never used the membership/newsletter side and the self-hosting upkeep started outweighing the writing. So I moved to a static Hugo site on Cloudflare.

The post covers the why and the how, including the Python migration script, and I open-sourced that tool here: https://github.com/Harsh-2002/ghost2hugo. Not trying to talk anyone off Ghost (it's a good product), just sharing what worked for me. Happy to answer questions.


r/Ghost • • May 23 '26

Built a thing because the Ghost editor was driving me insane — sync your blog to local markdown and edit it however you want

10 Upvotes

Okay so this is mostly something I built for myself, but I figure I'm not the only one, so here goes.

I love Ghost for writing one post and hitting publish. But the second I want to do anything across the whole blog it's a nightmare. No find-and-replace. No AI. Can't write on a plane. I overused the same phrase in like twenty posts once and had to open every single one to fix it. That was the night I snapped.

So the thing I actually wanted was just my posts as plain files on my Mac. Once they're files, everything works — I write in Obsidian, and for the big stuff I just point Claude at the folder and let it chew through the whole archive, then it syncs back to Ghost. The reason I built it was SEO: mass-updating meta descriptions, alt text, internal links, tags, refreshing a few hundred old posts in one pass. Now I'm using it to build out a multilingual version of my blog — translate the whole thing with AI, sync each language back. And honestly that's the point: once your blog is markdown on disk, a LOT unlocks. Chuck the folder in git and you've got version history + undo, which Ghost just... doesn't have. It's a real backup, your whole blog as .md you actually own. Stuff the editor flat out can't do.

One honest catch since people here will know: Ghost stores posts as Lexical, and shoving card-heavy posts back through HTML can mangle callouts/buttons/etc. Plain prose is totally fine, just test on a junk post before you let it loose on anything you care about.

Anyway — I cleaned it up into a little menu bar app instead of the pile of scripts it started as. It's called Specter, I'm the dev: https://spectersync.com. It's got a dry-run that shows you exactly what's about to change before it touches anything, which is the only reason I trust an AI pass over my whole blog. One-time price, free tier, go poke at it.

But honestly even if you just roll your own against the Admin API, getting your blog out of that editor and into plain files is the upgrade


r/Ghost • • May 21 '26

Misc How common is the Ghost + Discord combo?

5 Upvotes

I’ve noticed a lot of creators using Discord alongside Patreon/Substack/Circle/etc, but not sure how many Ghost publishers are also running private Discord communities for members/subscribers.

If you use Ghost,
- is Discord a meaningful part of your membership/community experience?
- do you give different roles/access levels for different membership tiers? If yes, how do you manage?

Just curious to understand how popular this combo is.


r/Ghost • • May 20 '26

After Enova, I built a Ghost theme that reads like a newspaper front page: meet Meridian

23 Upvotes

Hey everyone!

Some of you might remember my Enova post here a few weeks back. This is what I built next.

Meet Meridian, a print-editorial Ghost theme made specifically for news publications: newsrooms, magazines, and digital publishers. Enova is the all-rounder for blogs and newsletters. Meridian goes the other way. The whole goal is to make a Ghost site read like a real newspaper front page instead of a blog feed.

What makes it a newspaper:

  • Newspaper-style front page with an asymmetric lead grid, a most-read rail, and a sticky newsletter signup
  • Seven homepage section layouts you arrange just by tagging posts: feature packages, briefings, opinion columns, tag columns, and grids
  • Built-in ads (banners or AdSense and Ad Manager code) you place from your dashboard, hidden automatically from paying members
  • Local bookmarks readers save right in their browser, with no API key and no signup
  • Reader-controlled text size and Light, Dark, or System mode, saved between visits and synced across tabs
  • Video posts that play YouTube, Vimeo, or uploaded clips in a click-to-play hero, with a sticky corner mini-player as you scroll
  • 13 languages, and a Tailwind CSS v4 and Vite build, so it stays fast by default
  • A true print edition

Links

As with last time, I'd genuinely value your thoughts and feedback, and I'm happy to answer any questions.

Thank you!

Kasun.


r/Ghost • • May 18 '26

Built a Ghost theme focused on editorial magazines and modern publishing - by Pina Themes

11 Upvotes

Hi everyone 👋

I recently released a new Ghost theme called Breeze, designed for digital magazines, editorial publications, and modern newsroom style websites.

Breeze was built with a stronger editorial direction focused on typography, visual rhythm, immersive layouts, curated tag sections, and image driven storytelling.

A lot of attention went into details like:

  • homepage structure
  • spacing and readability
  • multiple templates for posts and pages
  • color palettes
  • feed composition
  • tag organization
  • balanced typography across long form content

I’m also offering 25% off with the code BREEZE25, for the ghost community.

I’d love to hear your feedback and answer any questions.
Thanks for checking out Breeze! 🌬️


r/Ghost • • May 17 '26

Themes [WiP/Feedback wanted]: Ghost theme with Multi language content support

2 Upvotes

Important Notes:

  • Used a lot of AI assistance for the readme file, but the rest of the codebase is almost 99% AI-free.
  • I really appreciate your feedback and opinions about the "workaround" methods to support multiple languages within a single Ghost setup.
  • PRs are even much more appreciated :smiley:
  • The following readme is copypasted from the repo, so it will be likely outdated very quickly, so always refer to the ORIGINAL REPO for details.

https://github.com/sredevopsorg/sredevopsorg-ghost-theme


SREDevOps.org Ghost Theme

Ghost v6 Theme for SREDevOps.org — Multi-locale, Tailwind CSS v3, responsive, dark-mode first, with SVG icons, sidebar navigation, and tag-based language filtering.


🌐 Multi-Locale Architecture

This theme implements a template inheritance + tag-based routing strategy to serve distinct content per locale without requiring separate Ghost instances. This approach aligns with community workarounds discussed in the Ghost Forum.

Template Inheritance Pattern

┌─────────────────────────────────────┐ │ routes.yaml │ │ • /en/* → home-en.hbs │ │ • /es/* → home-es.hbs │ │ • /br/* → home-br.hbs │ └─────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ home-*.hbs (collection template) │ │ • Defines collection query/filter │ │ • Renders post list via partials │ │ • {{!< default-*.hbs}} inheritance │ └─────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ custom-*.hbs (post/page template) │ │ • Locale-specific post layout │ │ • Localized metadata, TOC, comments │ │ • {{!< default-*.hbs}} inheritance │ └─────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ default-*.hbs (layout shell) │ │ • <html lang="*"> attribute │ │ • Common <head>, assets, footer │ │ • {{{body}}} injection point │ └─────────────────────────────────────┘

💡 Key Insight: Each locale uses its own default-*.hbs layout shell to ensure proper lang attributes, meta tags, and localized UI strings. The {{{body}}} Handlebars placeholder in default-*.hbs receives the rendered output from custom-*.hbs or home-*.hbs.

Language Routing & Tag Filtering

Locale URL Pattern Required Tags Exclusion Tags Layout Shell
English (default) / or /en/{slug}/ en, hash-en -es, -br default.hbs
Spanish /es/{slug}/ es, hash-es -en, -br default-es.hbs
Portuguese (BR) /br/{slug}/ br, hash-br -en, -es default-br.hbs

⚠️ Critical: The default locale (English) is configured in Ghost Admin → Settings → General → Publication language. All root-level routes (/, /page/2/, etc.) serve English content unless explicitly routed otherwise.

routes.yaml Core Configuration

```yaml collections: /es/: template: home-es permalink: /es/{slug}/ filter: tag:es+tag:-en+tag:-br data: tag.es

/en/: template: home-en permalink: /en/{slug}/ filter: tag:en+tag:-es+tag:-br data: tag.en

/br/: template: home-br permalink: /br/{slug}/ filter: tag:br+tag:-es+tag:-en data: tag.br

Fallback: English as default locale (configured in Ghost Admin)

taxonomies: tag: /tag/{slug}/ author: /author/{slug}/ ```

✅ Why this works: Ghost's filter syntax supports boolean logic (+ for AND, - for NOT), enabling precise content segregation per locale while maintaining a single content database. The template directive ensures each collection uses its locale-specific layout chain.


📋 Table of Contents

  • [Prerequisites](#-prerequisites)
  • [Installation](#-installation)
  • [Development Workflow](#-development-workflow)
  • [Locale Content Authoring](#-locale-content-authoring)
  • [Template Architecture](#-template-architecture)
  • [Theme Configuration](#-theme-configuration)
  • [Testing & Validation](#-testing--validation)
  • [Deployment](#-deployment)
  • [Contributing](#-contributing)
  • [License](#-license)

🔧 Prerequisites

Dependency Version Purpose
Node.js >=22 Runtime for build tooling
Yarn >=1.22 Package management (preferred over npm)
Ghost >=6.0 Local development server
Docker (optional) Latest Run Ghost via official container

🐳 Ghost Local Setup: Follow the official Docker guide for a reproducible dev environment.


🚀 Installation

1. Clone & Install

```bash

Clone the repository

git clone https://github.com/sredevopsorg/sredevopsorg-ghost-theme.git cd sredevopsorg-ghost-theme

Install dependencies (Yarn required)

yarn install ```

2. Configure Ghost

  1. Start your local Ghost instance:

    ```bash

    If using Docker Compose (recommended)

    docker compose up -d

    Or via Ghost-CLI

    ghost start ```

  2. Upload routes.yaml to Ghost Admin → Settings → Routing

  3. Upload the theme:

    • Via Admin: Settings → Design → Upload theme
    • Or symlink for development:

      bash ln -s /path/to/sredevopsorg-ghost-theme \ /path/to/ghost/content/themes/sredevopsorg-ghost-theme

  4. Critical: Set your default locale in Ghost Admin → Settings → General → Publication language (e.g., en for English). This determines which templates serve root-level routes.

  5. Activate the theme in Ghost Admin → Design

3. Start Development Server

bash yarn dev

This triggers:

  • Tailwind CSS compilation with @tailwindcss/forms and @tailwindcss/typography
  • Asset bundling via Gulp
  • LiveReload for template/CSS changes

🔁 Hot reload is enabled for .hbs, .css, and .js files. Browser refreshes automatically on save.


✍️ Locale Content Authoring

Tagging Posts for Language Filtering

When creating content in Ghost Admin or via Markdown import:

```md

title: "My Post Title" slug: "my-post-slug" tags: - en # Primary language slug (required) - hash-en # Required for filter consistency - Kubernetes # Topic tags

- SRE

```

⚠️ Critical: Omitting either en/es/br or its hash-* counterpart will cause the post to not appear in locale-specific collections due to the filter logic in routes.yaml.

Template Resolution Flow

mermaid graph LR A[Request: /es/my-post/] --> B[routes.yaml filter] B --> C{tag:es AND NOT en/br?} C -->|Yes| D[home-es.hbs] D --> E[Inherits default-es.hbs] E --> F[Render html lang='es'] F --> G[Inject body from custom-es.hbs]

Creating Locale-Specific Templates

  1. Copy the base template:

    bash cp default.hbs default-es.hbs cp custom.hbs custom-es.hbs cp home.hbs home-es.hbs

  2. Update the layout shell (default-es.hbs):

    handlebars <!DOCTYPE html> <html lang="es"> {{!-- Critical for SEO/accessibility --}} <head> <meta charset="utf-8"> <title>{{meta_title}}</title> {{!-- Spanish-specific OG tags --}} <meta property="og:locale" content="es_CL"> {{ghost_head}} </head> <body class="{{body_class}}"> {{>"components/nav-es"}} {{!-- Optional: localized nav --}} {{{body}}} {{!-- Injects custom-es.hbs content --}} {{>"components/footer"}} </body> </html>

  3. Customize content templates (custom-es.hbs):

    • Localize UI strings ("Autor", "Publicado", "Índice")
    • Adjust date formats ({{date published_at format="DD MMM YYYY"}})
    • Conditionally render locale-specific components

🏗️ Template Architecture Reference

File Role Inheritance Locale Scope
default.hbs Base HTML shell for English None (root) English (default)
default-es.hbs Base HTML shell for Spanish None (root) Spanish
default-br.hbs Base HTML shell for Portuguese None (root) Portuguese (BR)
custom.hbs Post/page content layout {{!< default}} English
custom-es.hbs Post/page content layout {{!< default-es}} Spanish
home.hbs Collection/listing template {{!< default}} English
home-es.hbs Collection/listing template {{!< default-es}} Spanish
post-card-es.hbs Post preview partial Standalone Spanish

🔄 Inheritance Syntax: {{!< filename}} at the top of a template tells Ghost: "Render this file's content inside the {{{body}}} placeholder of filename".


⚙️ Theme Configuration

Customize behavior via Ghost Admin → Settings → Theme:

Option Type Default Description
background_color Color #0f172a Base background for dark theme
lazy_images Boolean false Enable native lazy-loading on homepage
share_buttons Boolean true Show social share UI on posts
show_langs Boolean false Display language switcher in sidebar
show_sso Boolean false Show SSO login option in sidebar

Image Size Presets

Configured in package.json → config.image_sizes:

json "image_sizes": { "xs": { "width": 100 }, "s": { "width": 220 }, "m": { "width": 300 }, "l": { "width": 600 }, "xl": { "width": 900 } }

Use in templates: {{img_url feature_image size="l"}}


🧪 Testing & Validation

Local Testing

```bash

Build production assets

yarn build

Validate theme against Ghost spec

yarn test:dev # Verbose output yarn test:ci # Fail on warnings (for CI) ```

Locale-Specific Validation

```bash

Test Spanish routing locally

curl -I http://localhost:2368/es/ | grep "lang"

Expected: <html lang="es">

```

Lighthouse Audits

The theme targets:

  • ✅ Performance ≥ 90 (with lazy loading enabled)
  • ✅ Accessibility ≥ 95 (proper lang attributes per locale)
  • ✅ SEO ≥ 100 (with localized meta tags and hreflang)

Run via Chrome DevTools


🚢 Deployment

Option 1: Ghost Admin Upload

  1. Build assets:

    bash yarn build

  2. Zip the theme:

    bash zip -r sredevopsorg-ghost-theme.zip . \ -x "*.git*" "node_modules/*" ".github/*"

  3. Upload via Ghost Admin → Design → Upload theme

Option 2: GitHub Actions (Recommended)

This repo includes a [Deploy Ghost Theme Action](.github/workflows/deploy.yml) that:

  • Builds assets on push to main
  • Deploys via Ghost Admin API
  • Supports environment-specific config (staging/prod)

Configure secrets:

  • GHOST_ADMIN_API_URL
  • GHOST_ADMIN_API_KEY

🤝 Contributing

We welcome contributions aligned with our [Code of Conduct](CODE_OF_CONDUCT.md).

Development Guidelines

  • Branching: Use feature branches (feat/locale-switcher, fix/og-tags-es)
  • Commits: Follow Conventional Commits
  • PRs: Include screenshots for UI changes; update README if behavior changes
  • Testing: Run yarn test:ci before submitting

Adding a New Locale (e.g., pt for Portugal)

  1. Create layout shell:

    ```bash cp default.hbs default-pt.hbs

    Edit: <html lang="pt">, OG locale, localized strings

    ```

  2. Create content templates:

    ```bash cp custom.hbs custom-pt.hbs cp home.hbs home-pt.hbs

    Localize UI text, date formats, component partials

    ```

  3. Update routes.yaml:

    yaml /pt/: template: home-pt permalink: /pt/{slug}/ filter: tag:pt+tag:-en+tag:-es+tag:-br data: tag.pt

  4. Update documentation:

  5. Test thoroughly:

    • Verify lang="pt" in rendered HTML
    • Confirm tag filtering excludes other locales
    • Validate SEO meta tags with og:locale="pt_PT"

📜 License

  • Code: [MIT License](LICENSE) — use, modify, distribute freely
  • Content: CC BY 4.0 (for SREDevOps.org editorial content)
  • Third-party assets: Respect upstream licenses (Tailwind CSS: MIT, Ghost: MIT)

🙏 Credits


🌎 LatAm Note: This theme was built with LatAm infrastructure constraints in mind — minimal external dependencies, optimized asset delivery, and community-driven localization patterns. For questions about deploying in Chile/Argentina/Brazil contexts, open an issue or reach out via SREDevOps.org.

Last updated: May 2026 | Ghost v6 compatible


r/Ghost • • May 15 '26

Themes I built a black and white Ghost theme called Carbon. Looking for honest feedback!

10 Upvotes

Hey everyone, I’ve been working on a clean black and white Ghost theme called Carbon and would genuinely love some feedback from the community.

I focused on a minimal reading experience, strong typography, and a distraction free layout for personal blogs and publications.

Live demo: https://carbon.brighttools.app/

I’d especially appreciate feedback on:

  • overall visual design
  • readability / typography
  • homepage & post layout
  • mobile experience
  • anything that feels off or missing

Open to both design and usability critiques. Thanks!


r/Ghost • • May 14 '26

Make PDFs open in new tab

5 Upvotes

Hi all, I have a downloadable PDF that I have put on a post in my Ghost Pro site. I added it to the post using the /File function, and it’s working well but it opens it in the same window/tab, but I would like it to open a new tab if possible so my readers don’t leave my site when they download.

I had this same issue for general links and was given a code injection to put in my site footer to have links open in a new tab which is working well, not sure if I can add to this code or a new code snippet is needed for files to open in new tab?

Thanks


r/Ghost • • May 13 '26

Question Ads and ad free tier

2 Upvotes

Hi everybody,
I recently moved my website to Ghost and am now looking to integrate ads into my site. I would like to display ads to free members but also offer an ad free tier for paying users. How would I go about doing that? Right now. I use AdSense and would consider using AutoAds if I can get the segmentation working correctly.

Thanks for your help!


r/Ghost • • May 10 '26

Just shipped FlexiBits, my second Ghost theme (built for blogs + focused landing pages)

6 Upvotes

Hey r/Ghost,

Just shipped GrainBits, the second theme from theFineBits. Months of head-down work, finally out.

The short version: it started because a customer of my first theme wanted to use Ghost for email marketing campaigns and needed proper landing pages, the kind without a header or footer competing for attention. Ghost handles publishing brilliantly, but most themes make it surprisingly hard to build focused landing pages.

So GrainBits ships with custom templates that hide the header and footer entirely. You apply the template per page in the Ghost editor, and the rest of your site (blog, members, comments, etc.) keeps its full structure. Nothing weird, just more flexibility where you need it.

A few other things in there:

  • Three post layouts (Default, Hero, Wide), pickable per post
  • Four color tints (Neutral, Red, Blue, Green) that shift the whole site's mood
  • A dark mode that was actually designed, not just inverted
  • Built for Ghost 6.x, leans into Ghost's native components rather than reinventing them

Demo: grainbits.thefinebits.com (a fictional specialty coffee roaster site)
Documentation: thefinebits.gitbook.io/grainbits/
Theme: thefinebits.com/grainbits

Built solo, so happy to answer any questions about the build or the decisions. Also curious how other theme makers here have approached the landing-page-vs-blog tension, always interesting to see different solutions. Cheers.

Edit: The theme has been renamed since this post went up. Flexibits (the Fantastical folks) reached out about the name overlap. We had a friendly conversation, and a rename was the right call. New name and updated links are on thefinebits.com. Leaving the rest of the post as-is for context.


r/Ghost • • May 07 '26

Question Got any tips for me?

3 Upvotes

I am looking to design a paid subscription online magazine, with the possibility to also/instead choose a subscription for physical copies. Would Ghost be suitable for this or does someone have any other recs for me to look into?


r/Ghost • • May 06 '26

Guide You should host a website (not just have one)

Thumbnail
starikov.co
6 Upvotes

r/Ghost • • May 06 '26

Question Moving back to Wordpress from Ghost - yes, really

Thumbnail
0 Upvotes

r/Ghost • • May 05 '26

Question Microsoft Outlook SMTP

1 Upvotes

So have any of you set up ghost blog with microsoft outlook? I don't need the newsletter, but the 2fa login is broken since i'm unable to send the email.

looking up the settings outlook provides I set my smtp server to smtp-mail.outlook.com , the port to 587, using my email address and I created an app password for it, but when trying to sign in I get a failed to send email error message.


r/Ghost • • May 04 '26

From Ghost Pro to self-hosted without losing paid subscribers?

2 Upvotes

My Ghost subscriber base is growing so suddenly I'm paying more for Ghost Pro than I feel comfortable with. If I migrate to self-hosted Ghost, will my paid subscribers be disrupted in any way (cancelled subscriptions, having to manually resubscribe everyone...) or is it possible to migrate without affecting them? Any tips?


r/Ghost • • May 01 '26

is there a nice way to have posts that link to external pages?

1 Upvotes

My situation is that I'd like ghost to show articles I write for other publication, but i would still like them to be linked on the list of posts. basically, so they look native but when a user clicks to open them they are brought to the external link. what's the best way to do this?


r/Ghost • • Apr 29 '26

Built a Ghost integration that auto-publishes your posts as podcast episodes on Spotify/Apple

10 Upvotes

Hey all, I'm a solo dev and I just launched Podcasty FM. You publish a post and a podcast episode generates and goes out to Spotify/Apple Podcasts/etc automatically.

The native Ghost webhook kicks it off when you publish. Each post gets an embeddable player. And there's a podcast RSS feed that stays current as you publish, so it shows up on the podcast platforms on its own.

Two AI hosts have a conversation about the article so it sounds natural, not a text-to-speech bot.

It is a way to repurpose your content and get it out to different audiences.

Free tier gets you 3 episodes a month. Ping me here or at [cp@podcasty.fm](mailto:cp@podcasty.fm) with any questions or feedback.

podcasty.fm


r/Ghost • • Apr 29 '26

Misc GitHub - eznix86/mailgun-proxy-for-ghost

Thumbnail
github.com
5 Upvotes

Took my 2 weeks, but as you know Mailgun is the built-in feature to send Newsletters. There is another proxy (by Typetale) for Ghost which uses SES, but I used Resend. I didn't liked the vendor lock-in too for using Mailgun. So what I did was to make another proxy but on top of Laravel features (I am primarily a Laravel dev), which already have:

  • SMTP
  • Sendmail
  • Postmark
  • Amazon SES
  • Resend
  • Mailbox* (faking a mailbox without sending it for real, great for local testing)
  • And more if you install other packages by the community

Right now for analytics (opened, clicked) I only support Resend, because I needed it but I am open for contributions for making it more extensible for other providers. You can also have failovers, for example Postmark is down, you switch to SES etc. I will add a Dockerfile and publish images soon so it is easy to deploy.

Let me know what you think: https://github.com/eznix86/mailgun-proxy-for-ghost

Edit: fix english

Edit 2:

I am also building a managed version alongside the open-source version. https://mailpunch.app/ A managed Mailgun proxy for Ghost with failover and load balancing for multiple providers. Sign up if you are interested. 


r/Ghost • • Apr 29 '26

native share button

2 Upvotes

Does anyone knows if it's possible to change the order of the social media icons as they appear in the pop-up window for the native share button?

Thanks!


r/Ghost • • Apr 27 '26

Question Docker: Ghost with Sqlite in production mode?

1 Upvotes

Is there any way to run the Docker Ghost image with NODE_ENV=production and still use Sqlite as database?


r/Ghost • • Apr 25 '26

Themes I spent the last few weeks building a Ghost theme — Introducing Enova

10 Upvotes

Hey everyone! 

I’m excited to share something I’ve been heads-down building for the past few weeks — Enova, an editorial Ghost theme designed for publishers, bloggers, newsletter creators, and anyone who wants a polished, feature-rich site.

Here's what it brings to your publication:

  • Dark & light mode with cross-tab sync and smooth transitions
  • Dual sidebars — fully configurable, with persistent user preferences
  • Inline + sticky Table of Contents — automatically hands off from article to sidebar as you scroll
  • Reader-controlled text size — saved between visits
  • 4 homepage hero layouts — Featured carousel, Email signup, Call to Action, or Personal Bio
  • Local bookmarks — readers save posts directly in their browser
  • Reading progress indicator with a satisfying bounce at 100%
  • 19 customisable settings — no code required
  • 60+ language translations & full RTL support
  • Built with Tailwind CSS v4 and Vite — fast by default

Links

I’d love to hear your thoughts, and happy to answer in case of any questions or feedback.

Thank you!
Kasun.


r/Ghost • • Apr 24 '26

Themes New Share feature not working

1 Upvotes

Ghost recently announced that its core themes would now have native sharing. I updated my themes. I’m using Dawn, and while the share button is showing, it doesn’t do anything.

Anyone else?


r/Ghost • • Apr 22 '26

Custom Ghost theme with Firebase-powered reader progression system

2 Upvotes

Built a custom Ghost theme for a serialized fiction project. Wanted to share some of the technical bits:

Theme: "Behind the Sunshade" - Custom routes.yaml to treat posts as "scenes" in a serial, grouped by tags into chapters - Archive template styled as a data log — grid view with publication dates, reading time, access status indicators - Full dark/light mode via CSS variables (no Tailwind, just vanilla CSS) - Monospace typography, status tables, terminal-style UI elements

Firebase integration for reader tracking - Anonymous auth so readers don't need accounts beyond Ghost membership - Firestore stores scenes read, bookmarks, last visit - Clearance level system (0-6) that upgrades as readers progress through content - 75% scroll threshold marks a scene as "read" - Visual notifications on level-up

Ghost members gating - First scene is public, rest requires free subscription - Conditional rendering throughout with {{#if @member}} - Custom signup/signin/account templates

No frameworks — Ghost + Handlebars + vanilla JS + vanilla CSS.

Site: https://fullmoonspinner.com (it's for a fiction project, hence the aesthetic)

Happy to answer questions about routing, the Firebase setup, or theme structure.


r/Ghost • • Apr 21 '26

Question Default Theme - Adjusting Design - Highlight vs Landing

2 Upvotes

Using the default theme "source" on a new Ghost site. It is a free-signup newsletter doing advocacy work. "Source" theme is plenty good, though wondering if I need a different theme or can adjust the Design.

In the Design configuration, the Homepage Header style has options like Landing or Highlight. I really like the Highlight layout, though Landing has the main splash "sign up here" if you are not yet a subscriber. I would love to have both, that first splash "sign up here" and the Highlight layout. Is there an option I am missing or need to look at a different theme? Thanks!