Newcomer, question regarding structure/flexibility


I’m looking for a CMS-like framework for a website and stumbled upon Ghost. The developer-friendly backend and refined frontend make it look very appealing to me. Before diving deep, I’d like to gather some feedback on whether Ghost would be a good fit to the site’s content structure or not.

The website would track a list of events. Each event has a date (can be in the past). A person using the Admin interface should be able to create these events and set their dates comfortably through the GUI. I reckon Ghost’s “posts” concept would map onto events fairly well? It would also be very nice if the editor could group these events, i.e. as belonging to a certain era. Would something like a tagging feature suffice maybe?

On the frontend, I’d then like to present these events in multiple views, e.g. single, lists grouped by date-range or category, etc.

Do you think Ghost’s Admin frontend and Data backend would fit such structure, or can you see some potential friction point?

Thank you for your time!

the better way what y know it is up a ghost installation (can be dockerized image) and use it.

Can be complicated pass al yourl context here and debate in it.

Hi @_adrian,

I’m new to Ghost too, but from what I can make out, it could be possible, assuming you’re comfortable doing some development to get the system going. You could use the post “title” and “content” as the event’s title and content, put an optional feature image, tag it, and so on. And the “date of publication” can be used as the event date; Ghost allows you to set dates in the past as well as schedule posts for the future.

A few thoughts and potential stumbling blocks:

  • Are you going to have substantial writing about the events (ie. “post body”? If it’s just a title and date then Ghost’s admin interface would need tweaking since you’d just have a huge blank space with a menu on the side.
  • Would the events have to be “live” (ie. visible on the public site) before their designated date comes up? Because that’ll be a problem for future events (Ghost can keep scheduled drafts for the future, but they’ll be published only when the actual date arrives).
  • Ghost has a “tags” feature which would work for your event grouping. The first or “primary” tag is sometimes treated specially (eg. displaying it prominently in some templates), but apart from that, there’s no hierarchy or “nested tags” option. If you need that kind of thing, Ghost may not be the best option.
  • Regarding frontend, grouping by tags is trivial (already implemented in fact!). As for grouping by date, I haven’t checked it out. It should be possible given Ghost’s target audience, but you might want to verify that with someone else.
  • Ghost doesn’t allow custom fields at the moment, so you’ll have to make do with available ones. They do have options for “extra header code” and “extra footer code” to inject special code into the header/footer of the post, as well as a site-wide equivalent.

That said, Ghost’s API is pretty powerful. You could potentially use Ghost as a backend, and create a frontend with something like Gatsby as I’m doing (there’s a starter template and tutorial, and it’s what I’ve done for my website).

Similarly, I don’t think it would be very hard to create a simple “Create an Event” interface using Ghost’s Admin API, assuming the existing one is too cumbersome. (It’s clean and minimalist, but you do have to go to the sidebar to set the date, which would be annoying if it’s something you have to set on every post).

Then again, if you’re coding both the fronted and admin it might be a bit redundant to use Ghost at all—although you’ll still have the advantage of Ghost’s powerful pluggability.

If you want to give Ghost a spin yourself, check out something like this Ghost on Heroku project. You can deploy to Heroku for free (though you have to “verify” your account by providing credit-card details); that way you can experience first-hand what it’s going to be like.

Hope that helps—and feel free to request more clarification if you need it :slightly_smiling_face:

1 Like

Thanks @badrihippo for the elaborate response, exactly what I needed to know!

  • The events will have proper bodies of text, so the regular UI should be fine.
  • The events can be go live after they have happened, so I guess I could repurpose the publishing date, as you suggested.
  • Tags, the way you describe them, should suffice I think. Ditto regarding grouping, I’d be surprised if pagination couldn’t filter by date-range.
  • No custom fields is a major letdown for sure, that would be so useful to have!

Then again, if you’re coding both the fronted and admin it might be a bit redundant to use Ghost at all—although you’ll still have the advantage of Ghost’s powerful pluggability.

Agreed. Instead of a headless CMS, I’ve actually been looking for a CMS-less head, a battle-tested frontend that maps to API endpoints (e.g. REST) that I can complement with my own backend. For me, interactive frontends are the major pain point in web development (protecting systems against human error), not backends! To replace something like Ghost, you’d have to mesh a text-editor component and the handling of media uploads – very work intensive and fragile! I also have a deep dislike for the Node.js ecosystem, so that makes working with these frameworks worse :smile:

Unfortunately I seem to be almost alone in that view on frontend development and thus had no luck finding such a sole frontend. Ghost with its refined Admin interface (and even native clients!) seemed like the next best thing, and leaves some control on the backend, at least regarding how content is served/rendered.

Sorry for the late reply, I’ve been pretty busy :stuck_out_tongue:

Yes, by what you say, I think Ghost is the best option for now! Custom fields is something that would really give it a lot more potential—think of all the extensions we’d be able to make!

A “CMS-less head” sounds like an interesting idea; in fact it makes a lot of sense as a complement to all the “headless CMSes” out there. I’m surprised nobody’s created one already! Maybe nobody wants to do all that hard coding work. The only thing I can find that might fit the bill is Netlify CMS but it’s probably too minimalist for your needs.