{"id":33914443,"url":"https://github.com/christopher-b/vapour","last_synced_at":"2026-06-03T19:31:27.585Z","repository":{"id":312961399,"uuid":"1049467070","full_name":"christopher-b/vapour","owner":"christopher-b","description":"Ghost CMS theme boilerplate with Vite + TailwindCSS","archived":false,"fork":false,"pushed_at":"2026-03-16T13:55:32.000Z","size":2135,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-17T01:42:33.041Z","etag":null,"topics":["ghost-cms","ghost-theme","vitejs"],"latest_commit_sha":null,"homepage":"","language":"Handlebars","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/christopher-b.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T02:58:00.000Z","updated_at":"2026-03-16T13:55:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"6eb6c5d1-3735-4cc0-b22c-22b8261b642b","html_url":"https://github.com/christopher-b/vapour","commit_stats":null,"previous_names":["christopher-b/sidelight","christopher-b/vapour"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/christopher-b/vapour","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christopher-b%2Fvapour","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christopher-b%2Fvapour/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christopher-b%2Fvapour/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christopher-b%2Fvapour/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/christopher-b","download_url":"https://codeload.github.com/christopher-b/vapour/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christopher-b%2Fvapour/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33876893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ghost-cms","ghost-theme","vitejs"],"created_at":"2025-12-12T06:29:27.884Z","updated_at":"2026-06-03T19:31:27.575Z","avatar_url":"https://github.com/christopher-b.png","language":"Handlebars","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Ghost CMS theme boilerplate with Vite + TailwindCSS\n\nThis theme is intended as a starting point for Ghost themes powered by Vite and TailwindCSS, and any other modern JS goodness you want to bring. The visual design is intentionally bare bones, but it is intended to be fully-featured out of the box.\n\nThis theme is based on the [Ghost Starter theme](https://github.com/TryGhost/Starter), with inspiration from [biswajit-saha/vite-ghost-theme](https://github.com/biswajit-saha/vite-ghost-theme).\n\n## Theme Features\n\nThere are a few problems we need to solve when using Vite with Ghost:\n\n- Ghost and Vite both provide their development servers, but we point our browser at the Ghost server in development. This means we need to load the [Vite client](https://vite.dev/guide/backend-integration.html) and JS entrypoint in development, but we load built assets in production. We solve this by introducing a `development_mode` [custom setting](https://docs.ghost.org/themes/custom-settings). We turn it on in our development environment and leave defaulted to off in production.\n\n  An alternative method of detecting development, [suggested by Cathy Sarisky](https://forum.ghost.org/t/vapour-a-starter-theme-for-vite-tailwindcss/61229/4), is to check the URL for `localhost` or a local IP range. If you don't like the development custom setting flag, this would be a good approach.\n\n- We want to include built assets bundle in our production deployments, which means we can't hard-code built asset filenames in our templates. We solve this with a [custom Vite plugin](lib/vite/ghost-manifest-partials.js) that reads the Vite [asset manifest](https://vite.dev/config/build-options.html#build-manifest) and outputs dynamically-generated Handlbars templates that include the assets listed in the manifest. We can include these templates in our layouts, using the `development_mode` setting to ensure they're only loaded in production.\n\nThis setup provides hot module replacement and automatic reloads (even on changes to your Handlebars files)\n\nA note about cache busting: Ghost handles asset versions automatically using the `{{asset}}` helper, so we don't _need_ to use Vite's fingerprinted filenames; we could just output static assets and skip the whole manifest-scanning-partial-generation thing. But I like the flexibility it grants: we can load whatever Vite outputs without modifying our templates manually.\n\n### TailwindCSS\n\nTailwindCSS is supported out of the box. Sample Tailwind theme tokens are inluded in [`assets/css/tailwind.css`](assets/css/tailwind.css). Support for font-families from [modernfontstacks.com](https://modernfontstacks.com) is included, as are font overrides in the Ghost Theme UI (see `assets/css/fonts.css`).\n\n[Tailwind Typography](https://github.com/tailwindlabs/tailwindcss-typography) is configured, which includes customizable styles for CMS content via the `prose` utilities.\n\n### PrismJS\n\nCode blocks get automatic syntax highlights via [PrismJS](https://prismjs.com/). Only Javacript support is enaled by default; other languages can be added in the Prism plugin config in vite.config.js. You can also include one of the bundled themes, or pull in additional themes from [prismjs/prism-themes](https://github.com/prismjs/prism-themes)\n\n### GitHub Deploy Actions\n\n[GH Deploy Action](.github/workflows/deploy-theme.yml) included by default, but commented out. See `.github/workflows/deploy-theme.yml`. [Learn more how to deploy your theme automatically](https://github.com/TryGhost/action-deploy-theme)\n\n## How to Use This Theme\n\nYou cannot upload this theme directly to your Ghost instance. Use the commands below to build the project, or export a zip file which can be uploaded to Ghost.\n\nFirst, install NPM packages:\n\n```bash\nyarn install\n```\n\n### Start development mode\n\nFrom the theme folder, start development mode:\n\n```bash\nyarn dev\n```\n\nOpen the Ghost admin dashboard on your development server. Open settings and navigate to Design \u0026 Branding \u003e Customize \u003e Theme, and enable the \"Development mode\" setting.\n\nChanges you make to your styles, scripts, and Handlebars files will show up automatically in the browser. CSS and Javascript will be compiled and output to the `built` folder.\n\nPress `ctrl + c` in the terminal to exit development mode.\n\n### Build, zip, and test your theme\n\nCompile your CSS and JavaScript assets for production with the following command:\n\n```bash\nyarn build\n```\n\nUse `gscan` to test your theme for compatibility with Ghost:\n\n```bash\nyarn test\n```\n\nCreate a zip archive:\n\n```bash\nyarn zip\n```\n\n## Copyright \u0026 License\n\nCopyright (c) 2026 - Released under the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristopher-b%2Fvapour","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristopher-b%2Fvapour","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristopher-b%2Fvapour/lists"}