ContentKit

Blog starter with headless CMS integration, draft previews, and scheduled publishing

ContentKit screenshot

ContentKit is a freemium SvelteKit 5 starter for blog projects. Built with postgres-other, prisma, tailwind, vercel. 280 GitHub stars. Actively maintained.

ContentKit bridges the gap between developer blogs (markdown in a repo) and enterprise CMS platforms (WordPress, Ghost). It gives content editors a visual editing interface through Sanity Studio while keeping the frontend a fast, type-safe SvelteKit app.

The Sanity integration goes deeper than most tutorials show. Draft previews render unpublished content in a side-by-side view. Scheduled publishing sets a future publish date and automatically triggers a Vercel rebuild. Content relations (categories, tags, authors) are all structured and queryable.

What stands out

The editorial workflow. Editors get a proper writing environment — rich text, image uploads, drag-and-drop block reordering, and inline previews. They can save drafts, request reviews, and schedule publications without touching code or understanding Git.

GROQ queries (Sanity’s query language) are type-safe throughout. The starter generates TypeScript types from your Sanity schema, so content queries in your SvelteKit load functions catch type errors at build time.

Where it could improve

Sanity’s free tier includes 100K API requests/month and 500MB of assets. For a popular blog, you’ll hit those limits within months. The paid plan ($99/month for the Team tier) changes the economics significantly — budget for it.

The ISR (Incremental Static Regeneration) setup is tightly coupled to Vercel. If you want to deploy to Cloudflare Pages or Netlify, you’ll need to rework the revalidation strategy. A more portable approach would strengthen this starter.

Reviewed by Gio Rodriguez Editor, SvelteStarters

Tech Stack

Database postgres-other
ORM prisma
Styling tailwind
Deploy vercel

Strengths

  • Sanity Studio embedded in the app — editors never leave the site
  • Draft preview mode shows unpublished changes in real-time
  • Scheduled publishing with automatic deployment triggers
  • GROQ queries are type-safe with generated TypeScript types

Weaknesses

  • Sanity has a learning curve for non-technical editors
  • Free tier limits make Sanity expensive at scale
  • Vercel-specific ISR setup doesn't port to other hosts easily

Best for

Content teams that need a CMS with editorial workflow while keeping the developer experience in SvelteKit

Not ideal for

Solo developer bloggers — markdown files are simpler if you're the only author

Similar starters