Astrix: a free open-source Ghost theme with four publication styles

I built Astrix, a free open-source theme for Ghost 6+.

It is meant for publishers who want one flexible theme rather than a single fixed layout. The same theme can work as a travel journal, design magazine, food publication, or personal blog by changing the hero style, feed layout, and accent in Ghost Admin.

It includes:

  • four hero styles

  • three feed layouts

  • native light / dark / system mode

  • membership and gated-content templates

  • styled Koenig cards

  • English and Italian locales

  • reading progress bar, table of contents, and related posts

Docs and demos:

Source:

Live demos:

I would appreciate feedback on Ghost compatibility, theme settings, membership flows, and anything that feels unclear before I submit it more broadly.

Wow! Very nice job, thanks for make it open!

Beautiful theme! I’m already translating this into Brazilian Portuguese.

Really enjoying Astrix — a few notes from a non-developer

I recently used Astrix as the foundation for a new independent cultural publication, and I’ve been really impressed with how flexible the theme is. I’m not a developer, so I thought I’d share a few things that were particularly difficult for me to figure out, in case they’re useful for future versions.

The main one was color customization. I changed the primary and secondary accent colors in Ghost, but some elements continued to use the theme’s original accent colors. In the end I had to dig into the CSS and track down variables such as --gh-accent-2, --gh-accent-fill, --gh-accent-line, etc. Once I understood what was happening it was straightforward to fix, but getting there was quite difficult from a non-developer perspective.

The same thing happened with the Subscribe button, some post tags, and the section divider: they didn’t all respond to the same color setting, so it wasn’t immediately obvious which setting controlled which element.

Another small thing I wanted to customize was the author metadata. I wanted the author’s name to remain clickable and lead to the author page, but without displaying the avatar next to the name. That required editing the template directly.

None of these are major issues, and I was ultimately able to get everything looking the way I wanted. But I think clearer mapping between the Ghost customization settings and the theme’s visual elements could make Astrix even easier to customize for non-developers.

Thanks for making such a flexible theme open source. It was the foundation for something I’m really happy with.

Astrix 0.3.0 is out — and it picks up a lot of the feedback from this thread. Thanks!

Release + full notes: Release v0.3.0 · adrianoamalfi/astrix-ghost · GitHub

@Marcelo_Rosales — the customization friction you described was the main driver for this one:

  • Every theme setting now has a description in Ghost Admin explaining exactly what it changes.
  • The README has a new section, How the two accent colours map to the page: Astrix uses two colour voices with separate jobs — Brand color drives the navy identity voice (buttons, active nav, links, section rules), and the theme’s Secondary accent setting drives the gold voice (hover, focus, text selection, the subscribe button, premium badges). That’s why changing one colour doesn’t repaint everything — now it’s documented instead of something you have to reverse-engineer.
  • The --gh-accent-2 you were editing by hand is that Secondary accent colour picker in Design settings — no CSS needed.
  • Author name without the avatar: Show author meta is now a three-way choice — Name and avatar / Name only / Hidden. Name only keeps the linked author name and drops the avatar, no template editing.
  • Two accent uses that could wash out under a dark Brand color on the dark scheme (the ghost-button hover border, the reading-progress bar) now go through scheme-safe derived tokens.
  • The derived tokens like --gh-accent-fill are still computed, not separate Admin knobs by design — to override one precisely, use Ghost’s code injection or a child theme (also noted in the README now).

@matribeiro — Brazilian Portuguese now ships with the theme (locales/pt.json, all strings translated) as a starting base, alongside new German, Spanish, French and Dutch locales. If you’d like to refine the pt-BR wording, a PR is very welcome and I’ll credit you.

Also in 0.3.0: a new CI step renders the theme in a real Ghost and runs axe-core (contrast, heading order, ARIA) in both light and dark on every change, plus accessibility and layout-shift fixes to feature images.

Keep the feedback coming — it’s genuinely shaping the theme.

Hi Adriano!

First of all, thank you for Astrix. I wanted to send you some feedback after spending pretty much an entire day yesterday customizing the updated theme for my new publication.

I should say from the beginning that I’m very happy with the final result. Astrix gave me a really solid foundation and saved me from having to build or heavily redesign a Ghost theme from scratch.

That said, the customization process was definitely more involved than I initially expected.

I’m a fairly junior developer, so I’m comfortable digging into HTML, CSS and a bit of JavaScript, but I’m definitely not a Ghost theme expert. That made the process particularly interesting — and, at times, a test of my patience. :sweat_smile:

The biggest issues I encountered were these:

1. The salmon color

This was, without question, the biggest headache.

I wanted to replace Astrix’s default salmon/pink accent with my web own brand color. I assumed this would be a relatively straightforward branding change, but the salmon color seemed to be integrated into several parts of the theme.

Finding exactly where it was coming from and making sure it was properly replaced required quite a bit of digging through the CSS.

For a publication rebranding Astrix, I think the primary accent color is one of the first things they are likely to want to change. Having a clearly exposed global accent-color variable or a documented place where the main theme color can be changed would make this much easier.

Honestly, the salmon color tested my patience more than anything else during the process. :joy:

2. Author avatars and show_author_meta

This was another confusing one.

Ghost provides the show_author_meta option with:

  • Name and avatar
  • Name only
  • Hidden

The description says that “Name only” drops the avatar, but selecting it didn’t actually remove the avatar from the individual post.

After digging through the theme, I found that the post itself was rendering another gh-author-avatar directly through post.hbs.

I eventually removed that markup from post.hbs, while deliberately keeping the avatar in author.hbs, because I wanted the author’s photo to remain visible on the author profile page.

So what I wanted was:

Individual post:
Author name, no avatar.

Author page:
Author photo, name and bio.

Once I understood the structure, it was easy enough to fix, but it took some investigation to figure out why the Ghost setting wasn’t producing the expected result.

3. Light/dark logos

I also wanted my page to use two different logo files depending on the color scheme.

The good news is that Astrix already has a pretty solid system / light / dark infrastructure. I really liked that part.

However, actually connecting separate light and dark logo assets required editing the header template and adding some CSS to control which image was displayed.

It worked very well in the end, but this is another area where a little more documentation — or a dedicated branding option — could make customization much easier.

4. Understanding where everything lives

This was probably the broader issue behind most of the work.

When trying to customize what should have been relatively simple things, I ended up having to investigate several files:

  • post.hbs
  • author.hbs
  • partials/post-hero.hbs
  • partials/post-card.hbs
  • partials/site-header.hbs
  • assets/built/screen.css
  • assets/built/main.js

None of these were particularly difficult once I found them, but figuring out which file controlled which part of the interface took time.

I think a short customization guide would be incredibly useful. Something like:

Want to change the post author metadata? → post.hbs
Want to change the author profile? → author.hbs
Want to change the header/logo? → site-header.hbs
Want to customize the color scheme? → main.js / CSS
Want to change the main accent color? → X

That kind of documentation could make Astrix much more approachable for people who are comfortable editing a theme but aren’t professional theme developers.

5. The overall experience

The interesting thing is that Astrix wasn’t actually difficult enough to make me abandon it.

Quite the opposite.

I downloaded the updated version one night and, by the following day, I had managed to turn it into something that feels very close to the identity I wanted for my page.

I didn’t spend several days fighting with fundamental problems. The theme is a very good foundation.

The frustration came mostly from discovering that some things appeared to already be solved through Ghost settings or the theme’s existing infrastructure, but then required manual intervention anyway.

If I had to summarize the experience in one sentence, it would be:

“I thought this was already solved, so why am I having to solve it manually?”

And, by the end:

“I now have a very good understanding of the theme’s internals — perhaps more than I initially wanted to have.” :joy:

Still, I want to emphasize that I’m happy with the result and very glad I chose Astrix as the foundation for my project.

So thank you for building it, and I hope some of this feedback is useful for future versions.

And please, for the love of God, make the salmon easier to kill. :joy:

Best,
Marcelo

I’d like your help - I downloaded your theme in Github but it won’t download as a .zip and instead I get the Astrix folder with assets. I need to upload it as a .zip file. Thanks in advance.

Sounds like your computer unzipped the file automatically. If you right-click on the file, click "compress’ (or similar) you should get a .zip file again, which you can upload.

Thank you and I will try this