Skip to content

About

Beautiful professional themes for the Ghost publishing platform.

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Ghost Themes

Custom themes for Ghost, designed and built by Salaheddin AbuEin.

Every theme is plain HTML5, CSS3 and ES6+ JavaScript with Handlebars templates. There are no front-end frameworks. They aim to be simple, responsive and accessible, and most are installable as progressive web apps (PWAs).

These are my independent projects, built outside my full-time role. For freelance enquiries, visit abuein.dev.

Themes

Theme Description Live site Version
247lep Plumbing and heating services 247lep.co.uk 1.1.0
2n1 UK-based holding company 2n1.co.uk 1.0.1
abuein-dev Personal site with RTL support abuein.dev 0.1.0
auntysuzy Sole traders, with a Snipcart shop auntysuzy.co.uk 0.1.0
bdde-zawake Arabic/RTL e-commerce for Zawake zawake.com 1.0.0
dar-abuein Publishing with RTL (Arabic) support abuein.com 1.0.0
elite-drivers-hertfordshire Airport transfers and ground transport servex.business 0.5.0
grace-gs Grace Governance Solutions gracegs.com 1.0.0
greenrock "Under construction" PWA greenrockps.com 1.0.0
lor-beauty Premium skincare brand lor.beauty 1.0.0
palestine-riders Exploring Occupied Palestine on two wheels palestineriders.com 1.0.0
rapid-is Rapid Information Systems rapid-is.co.uk 1.0.0
starter-kit Boilerplate for new themes — 1.0.0
swifton-databases Swifton Databases Limited swifton.co.uk 1.0.0
tufan Indie publishing and community media PWA tufan.uk 1.0.0
z23 Art galleries zawyeh.dev 0.1.0

Versions below 1.0.0 are still in development.

Requirements

  • Node.js 22.17+ or 24 (see .nvmrc)
  • Ghost-CLI — npm install -g ghost-cli@latest
  • A local Ghost install — ghost install local

The same commands work on Ubuntu and Windows (cmd, PowerShell or Git Bash).

Getting started

git clone https://github.com/sabuein/ghost-themes.git
cd ghost-themes
npm install

npm install runs once at the repo root. The repo uses npm workspaces, so every theme shares one node_modules.

Next, tell the tooling where your local Ghost lives. Copy ghost.local.example.json to ghost.local.json and edit it. Git ignores this file, so each machine keeps its own paths:

{
    "ghostDir": "~/my/instances/ghost-25",
    "zipDir": "~/Desktop",
    "themes": {
        "elite-drivers-hertfordshire": { "ghostDir": "~/my/instances/ghost-servex" }
    }
}

On Windows, use forward slashes, for example "C:/Users/you/my/ghost-cms". The GHOST_DIR and THEME_ZIP_DIR environment variables override the file.

Commands

Every theme has the same scripts. Run them from the repo root with -w <theme>, or from inside the theme folder without it.

Command What it does
npm run link -w 2n1 Link the theme into your Ghost content/themes (a junction on Windows, so no admin rights are needed)
npm run unlink -w 2n1 Remove that link
npm start -w 2n1 ghost start
npm stop -w 2n1 ghost stop
npm restart -w 2n1 ghost restart
npm run debug -w 2n1 ghost run -D (foreground, development mode)
npm run log -w 2n1 ghost log
npm run update -w 2n1 ghost update
npm run scan -w 2n1 Validate the theme folder with gscan
npm run zip -w 2n1 Build (if the theme has a build step) and write <zipDir>/2n1.zip
npm run scan:zip -w 2n1 Zip, then validate the zip exactly as Ghost will receive it
npm test -w 2n1 Same as scan

Root-level shortcuts run across every theme: npm run scan, npm run build, npm run zip.

All of this runs through one script, tools/theme.mjs. Some files never go in a zip: node_modules, .git, assets/labs, *.zip, logs and lock files. To exclude more files for one theme, list them in that theme's package.json:

"themeZip": { "exclude": ["assets/videos/**", "server/**"] }

Uploading a theme

  1. npm run scan:zip -w <theme>
  2. In Ghost Admin, open Settings → Design & branding → Change theme → Upload theme.
  3. Pick <theme>.zip from your zipDir and activate it.

Repository layout

ghost-themes/
├── tools/
│   ├── theme.mjs              # shared, cross-platform theme tooling
│   └── templates/             # README and LICENSE templates for new themes
├── ghost.local.example.json   # copy to ghost.local.json (git-ignored)
├── package.json               # workspaces + shared dev dependencies
├── <theme>/
│   ├── package.json           # Ghost theme config + the standard scripts
│   ├── README.md
│   ├── LICENSE
│   └── …                      # .hbs templates, partials/, assets/, locales/
└── …

Resources

Ghost

Progressive web apps

Contributing

Issues and pull requests are welcome. Please run npm run scan -w <theme> before opening a PR, and use Conventional Commits scoped to the theme, for example fix(2n1): ….

Author

Salaheddin AbuEin — abuein.dev · GitHub · LinkedIn

Licence

MIT © Salaheddin AbuEin, unless a theme's own LICENSE says otherwise.

About

Beautiful professional themes for the Ghost publishing platform.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages