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@canarypnpm add @vitnode/blog@canarynpm install @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 and its messages
The host registers the lightweight plugin identity and static locale loaders:
import { CONFIG_PLUGIN as BLOG } from '@vitnode/blog/const'
export const packageMessages = {
[BLOG.pluginId]: {
en: async () => await import('@vitnode/blog/locales/en.json'),
},
}import { blogPlugin } from '@vitnode/blog/config'
export const vitNodeConfig = buildConfig({
plugins: [
blogPlugin(),
],
})Migrate, run, and publish
bun run db:migrate
bun devpnpm db:migrate
pnpm devnpm run db:migrate
npm run 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.