Install the Blog Plugin
Install @vitnode/blog, enable its API and TanStack Start integration, then publish your first article in AdminCP.
@vitnode/blog is the Content Engine reference plugin. It brings articles,
categories, editorial screens, revisions, public delivery data, and search
indexing—without making your host app impersonate a blog plugin.
Install the package
bun add @vitnode/blog@canaryEnable the API plugin
For a Single App, edit apps/web/src/vitnode.api.config.ts; a split deployment
uses the same change in apps/api/src/vitnode.api.config.ts.
import { blogApiPlugin } from '@vitnode/blog/config.api'
export const vitNodeApiConfig = buildApiConfig({
plugins: [
blogApiPlugin(),
],
})Enable the web plugin
One line, and it brings the blog's pages, its AdminCP screens and its
translations with it - your build reads the factory and writes the loaders into
src/package-messages.gen.ts for you:
import { blogPlugin } from '@vitnode/blog/config'
export const vitNodeConfig = buildConfig({
plugins: [
blogPlugin(),
],
})Migrate, run, and publish
bun run db:migrate
bun devIn AdminCP, create a category at Blog → Categories, then publish an article at Blog → Articles. The plugin owns the editorial work so the host can stay boringly reliable.
Deliver it from a plugin
Build the public article page in a plugin too, then use the Content Engine delivery guide for loaders and SEO. That keeps the data model and its public URL together.