Core layer
blog-kit-core
Domain types, repository contracts, pagination, and pure content helpers.
Loading
The app is resolving local sample content or fetching data from Supabase, depending on the current runtime configuration.
blog-kit splits content logic, provider adapters, and app shell composition so you can swap brand, CMS, or routes without rewriting the whole blog layer.
Quick start
pnpm install
pnpm --dir apps/starter dev
pnpm --dir apps/starter build:staticUse sample content locally, switch to Supabase when the schema is ready, and export the same app as a public GitHub Pages demo.
Featured post
Separate your domain, adapters, and app shell so the blog can survive product changes.
System design
The starter is intentionally wired against public package APIs so teams can replace the shell, theme, and data source without reimplementing the blog domain.
Core layer
Domain types, repository contracts, pagination, and pure content helpers.
App integration
Metadata, RSS, sitemap, and structured data helpers for App Router projects.
Provider adapter
Provider-specific repositories and mapping logic for a Supabase-backed blog.
01
Boot the starter with in-repo content and validate package boundaries without credentials.
02
Point the app at a compatible schema and validate the adapter path with real published rows.
03
Export the starter for GitHub Pages and use it as a public package website and live preview.
Architecture · 1 min
Separate your domain, adapters, and app shell so the blog can survive product changes.
Open articlePlatform · 1 min
Provider integrations should be replaceable so the project stays useful outside one stack.
Open articleDocs · 1 min
A runnable example often teaches integration faster than a long README ever will.
Open articleRun the app locally with sample data, connect it to Supabase for integration work, or publish the exported version to GitHub Pages so people can inspect the product without cloning the repo.