Developer-defined content
Add a typed CMS to your existing React or Next.js app.
BTST turns TypeScript content models into database-backed APIs, generated forms, and editorial routes inside your app; you own public rendering.
Best for
Teams that want developers to own content models while editors manage records through an in-app admin interface.
- Requires
- A BTST database adapter; Code-defined Zod content types
- External service boundary
- None required
- Ownership boundary
- Content models live in your code and records stay in your database. You own public rendering and uploads; the packaged admin pages can be overridden or ejected.

BTST supplies
- Content-type and content-item data models with typed CRUD APIs and lifecycle hooks
- Admin routes for content-type lists, entries, creation, and editing
- Schema-driven forms generated from adopter-defined Zod content types
- Client hooks plus customizable and ejectable admin pages
You supply
- Code-defined Zod content types and application-owned public rendering
- A BTST database adapter
- An image upload implementation when file fields are enabled
- Authorization rules when content operations are protected
You own and customize
Content models live in your code and records stay in your database. You own public rendering and uploads; the packaged admin pages can be overridden or ejected.
Compatibility and dependencies
- Maintained integrations
- Next.js 15+ App Router · React Router v7 · TanStack Start
- Requires
- A BTST database adapter; Code-defined Zod content types
- External services
- None required
From registration to result
The shipped workflow
This is the feature path BTST supplies—not a claim that your app needs no integration work.
Model
Define each content type as a shared Zod schema in your app.
Generate forms
Turn schema fields and metadata into validated operator-facing forms.
Manage
Create and edit typed content records through the admin routes.
Render
Load records with packaged hooks and present them on application-owned routes.
Continue your task