Casper Astro is a static blog template that ports Ghost's default Casper 2.0 theme to Astro 7, generating a fully pre-rendered HTML blog with type-safe content validation, built-in Algolia search, and a Decap CMS admin dashboard.
What is Casper Astro?
Casper Astro is a modernized, high-performance port of Ghost's default Casper 2.0 theme, built on Astro 7 and TypeScript. It takes Markdown posts and JSON author and tag files as input, validates them with Astro Content Collections and Zod schemas, and outputs a fully static blog with pre-rendered HTML, Atom XML feeds, and Schema.org structured data. The template is maintained by Antony Leons on GitHub and released under the MIT License, the same license as the original Ghost theme.
Key Features
Casper Astro packages a focused set of features that cover the entire publishing pipeline, from content authoring to deployment.
- Astro 7 & TypeScript — Full TypeScript configuration with strict type checking across the entire project, including content collections and component props.
- Type-safe content schema — Astro Content Collections paired with Zod validate every post, tag, and author file at build time, catching malformed frontmatter before deployment.
- Modern asset pipeline — Stylesheets are bundled, minified, and optimized by Vite out of the box; no separate build tooling is needed.
- Zero-dependency Vanilla JS — The original jQuery-based infinite scrolling, scroll progress bar, and floating header are rewritten in clean Vanilla JS, and FitVids is replaced by a CSS aspect-ratio solution that needs no JavaScript.
- 100% SEO compliance — Automatic metadata, canonical URLs, Open Graph images, Twitter cards, and Schema.org JSON-LD structured data are pre-rendered server-side for every page.
- Compliance feeds — Atom XML RSS feeds are generated automatically at /feed.xml, /tag/[tag]/feed.xml, and /author/[author]/feed.xml, matching the original Jekyll feeds exactly.
- Algolia InstantSearch — A lightweight search overlay is pre-configured; add your Algolia application ID, index name, and search-only API key in src/config.ts to enable it.
- Decap CMS and Netlify Identity — A ready-to-use admin dashboard under public/admin/ lets you manage posts, authors, and tags from the browser, using Netlify Identity and Git Gateway for authentication and repository writes.
Who is it for?
Four user groups get the most value from Casper Astro, each using the template in a different way.
- Independent bloggers and writers — Publish Markdown posts and get a fast, fully static blog with built-in SEO and no database or server to maintain.
- Developers — Customize the Astro template, wire up Algolia search, and extend the content model using the TypeScript-first configuration and Zod schemas.
- Content teams — Edit posts and metadata through the Decap CMS admin interface without touching code, with Git-based versioning underneath.
- Ghost and Jekyll users migrating — Move from Ghost's Casper or the jasper2 Jekyll port while keeping a similar design and identical feed endpoints.
What can you do with it?
The template supports several concrete use cases, all built on its static output and CMS integration.
- Personal blogs: deploy a fast, SEO-ready blog to Netlify, Vercel, Cloudflare Pages, or GitHub Pages with one-click options for the first two.
- Search-enabled sites: set up Algolia InstantSearch so readers can find articles instantly across your posts and tags.
- Community and engagement: enable Disqus comments and use the location-aware subscribe forms to grow an email newsletter audience.
- Client projects: hand the Decap CMS login to non-technical users so they can publish content themselves while you maintain the code.
How does Casper Astro work?
Fork or use the template from GitHub, install dependencies with pnpm or npm, and run the dev server for local editing. Write posts as Markdown files in src/content/posts/, define authors and tags as JSON in their respective content folders, and configure site settings and Algolia credentials in src/config.ts. The template ships with three layout files — Layout.astro for standard pages, PostLayout.astro for articles with progress bars and Disqus lazy-loading, and PageLayout.astro for static pages like /about/ — plus components such as SiteNav.astro, AlgoliaSearch.astro, PostCard.astro, and FloatingHeader.astro. A build command compiles everything into a dist/ directory of static HTML you can host anywhere.
Pricing
Casper Astro is free to use, with no paid tiers or hidden fees. It is open source under the MIT License, the same license used by the original Ghost Casper theme.
Alternatives
Two related blog themes are directly comparable to Casper Astro.
- Ghost's Casper theme — the original theme this port is based on, designed for the Ghost publishing platform.
- jasper2 — the Jekyll port that Casper Astro replaces, originally used as the template's Jekyll equivalent.
FAQ
Here are answers to common questions about Casper Astro.
Is Casper Astro free?
Yes, Casper Astro is open source under the MIT License, so it is free to use, modify, and deploy anywhere. You pay nothing for the template itself.
How do I deploy Casper Astro?
You can deploy to Netlify, Vercel, Cloudflare Pages, or GitHub Pages. Use the one-click deploy buttons for Netlify and Vercel, or set the build command to pnpm build and the publish directory to dist. For GitHub Pages, use the included GitHub Actions workflow and select GitHub Actions as the source.
How do I add Algolia search to my blog?
Create an Algolia index, then add your application ID, index name, and search-only API key to the SITE_CONFIG object in src/config.ts. If that configuration block is removed or undefined, the search icons and widget automatically disable.
Does Casper Astro support Disqus comments?
Yes, Disqus comments are built in and can be toggled on or off. The template also includes location-aware email newsletter subscription forms.
What content formats does it support?
Posts are Markdown files, while authors and tags are JSON files. All content is validated by Astro Content Collections with Zod schemas, so invalid metadata fails the build rather than appearing on your site.








