Docs content in your database.
Store your documentation alongside your application data. Sections, ordering, rich text, and a changelog collection, all managed through the same admin panel your team already uses. No separate static site generator or third-party docs platform required.
Rich Text Editor
Full Lexical editor for doc pages: headings, code blocks, callouts, and embedded media. Writers get a proper editing experience.
Ordering Field
Use a number field for explicit ordering within each section. Render docs in the right sequence without relying on creation order.
Relationships
Docs belong to sections. Sections group related pages. Use relationship fields to model the hierarchy cleanly.
Changelog Collection
Version entries with a date, description, and type. Query the last 10 entries for a /changelog page in a single call.
Docs in Markdown files can't be updated by non-developers.
Static site generators and MDX work well for developer-maintained docs. But when a product manager or technical writer needs to update a page, they're filing a GitHub PR or waiting for someone who can. Hosted docs platforms solve the editing problem but add another service to your stack.
Nextly keeps docs in your database. Writers use the admin panel. Developers define the schema. The output is a Next.js page with zero extra infrastructure.
Docs schema: pages, sections, changelog
Docs collection
import {
defineCollection, text, richText,
relationship, number, select,
} from"@revnixhq/nextly/config";
export default defineCollection({
slug:"docs",
fields: [
text({ name:"title", required: true }),
text({ name:"slug", unique: true }),
richText({ name:"content" }),
relationship({ name:"section", relationTo:"sections" }),
number({ name:"order", min: 0 }),
select({
name:"status",
options: [
{ label:"Draft", value:"draft" },
{ label:"Published", value:"published" },
],
}),
],
});Sections collection
import {
defineCollection, text, number,
} from"@revnixhq/nextly/config";
export default defineCollection({
slug:"sections",
fields: [
text({ name:"title", required: true }),
text({ name:"slug", unique: true }),
number({ name:"order", min: 0 }),
],
});Changelog collection
import {
defineCollection, text, richText,
date, select,
} from"@revnixhq/nextly/config";
export default defineCollection({
slug:"changelog",
fields: [
text({ name:"version", required: true }),
date({ name:"releasedAt", required: true }),
richText({ name:"description" }),
select({
name:"type",
options: [
{ label:"Feature", value:"feature" },
{ label:"Bug Fix", value:"bugfix" },
{ label:"Breaking Change", value:"breaking" },
],
}),
],
});Start building with Nextly
Free, open source, and yours to own. No sign-up required.
npx create-nextly-app@latest