How to Build a Resource Directory on Ghost CMS

Most Ghost tutorials assume you're building a blog or newsletter. A directory is a different product. Different homepage, different navigation, different membership logic. This is how you build one on Ghost CMS - and where the default themes help versus where they fall short.

What makes a directory different from a blog on Ghost

A blog is reverse-chronological. A directory is browsable by category. That's the fundamental difference, and it affects everything.

In a blog, the atomic unit is an article. In a directory, it's a listing. A listing has a title, description, category tags, maybe an image, and a membership badge indicating who can see the full details. The homepage isn't "latest posts" - it's "browse by category."

The free/paid split works differently too. In a blog, you gate article content. In a directory, you gate listing depth. Free users see the directory. Paid users see premium listings, in-depth comparisons, and early access to new additions.

What Ghost handles natively for directories

Ghost has the building blocks. Tags work as categories. You can set up routes.yaml to create clean URLs like /tools/ai-writing/ instead of /tag/ai-writing/. Posts become listings. Each post can have a featured image, excerpt, and full content.

Membership tiers handle access control. Free tier for browsing, paid tier for premium content. Ghost's native search works across titles and excerpts. Content gating locks post content behind subscription levels.

The platform is capable. The presentation layer is where the default themes fall short.

Where Casper and Source don't work for directories

Casper's homepage is a post feed. Three layout options - classic, grid, list - all chronological. There's no "browse by category" section. No category tiles with listing counts. No featured listing card.

Source adds more flexibility but still assumes you're running a publication. Tag pages look like blog archives, not directory sections. There are no membership badges on cards. No related categories sidebar. The homepage is still post-first, not category-first.

You can force a directory structure onto these themes with code injection and custom templates. But you're fighting the theme's assumptions at every turn.

What to look for in a Ghost directory theme

A directory theme needs to handle five things that blog themes don't:

  1. Browse-by-category homepage - category tiles with resource counts, not a post feed
  2. Listing cards with membership badges - Members and Premium labels visible on every card, not just when you click through
  3. Category archive pages - header with category name and description, card grid, and a related categories sidebar. Not just a tag filter.
  4. Featured listing display - a way to highlight premium or sponsored listings with visual prominence
  5. Signup page with tier display - showing free vs. paid benefits clearly, not just a Portal modal

Building a tools directory with Beacon

Beacon is a Ghost theme built for directories. Here's the practical setup for a tools directory.

Tag structure as categories: Create tags for each category - "AI Tools," "Developer Tools," "Design Resources." Each tag gets a description and cover image in Ghost admin. These become category pages with proper headers, not generic tag archives.

Posts as listings: Each post is a listing. The title is the tool name. The excerpt is the short description visible on cards. The post content is the full review or listing details. Tag it with the right category.

Featured listings: Use Ghost's featured post toggle. Beacon renders featured posts as enlarged cards with accent badges - visual prominence without extra configuration.

Free vs. Pro mapping: Set up two membership tiers in Ghost. Free members browse the full directory and see basic listings. Pro members get premium listings (mark these posts as paid-only in Ghost), in-depth comparisons, and early access to new additions.

The homepage: Beacon's homepage automatically shows a browse-by-category section with resource counts, a featured listing, and a latest additions grid. No configuration needed - this is the default layout.

Components that make it work

Beyond the layout, Beacon includes components you'll need for a directory: a horizontal carousel with touch scrolling for featured collections, a table of contents with scroll-spy for long-form resource reviews, reading progress bars, social share buttons, and scroll reveal animations.

The design system uses CSS custom properties throughout - teal accent default, configurable via Ghost admin. DM Sans for headings, Inter for body, JetBrains Mono for code. Clean, neutral, gets out of the way of the content.

Who this setup is for

This works for niche tool directories (AI tools, dev tools, design resources), curated resource libraries with free and paid tiers, link directories with community interest, and comparison/review sites running on Ghost.

It doesn't work for directories that need user submissions through forms (you'd need a separate form tool and embed), real-time data feeds, or thousands of auto-generated listings. Ghost is a CMS - the content is manually curated.

If you're building a curated Ghost resource listing where quality matters more than quantity, Ghost plus a directory theme is a clean setup. No plugins. No database complexity. Just Ghost, a theme that fits the use case, and your content.

See Beacon's directory layout or view the theme details.

More from the Studio

8 min readBehind the ScenesGhost Themes

Why I Built 7 Ghost Themes for Specific Businesses

Most Ghost themes try to be everything. A minimal blog that also works for a magazine. A portfolio that doubles as a landing page. I went the other direction - one theme, one job.

10 min readGhost ThemesDocumentation

The Best Ghost Themes for Documentation Sites in 2026

If you're running technical documentation on Ghost, your theme options are limited. Most docs tools aren't Ghost themes, and most Ghost themes aren't docs tools. Here's what actually works in 2026.