Configuration
Everything about configuring your Viabl documentation project with docs.json.
All configuration for your Viabl project lives in a single docs.json file at the root of your project. Add the $schema field to get full intellisense and validation in VS Code.
{
"$schema": "https://viabl.dev/schema/docs.json",
"name": "My Docs",
"navigation": [
{
"group": "Getting Started",
"pages": ["introduction"]
}
]
}Only name and navigation are required. Everything else is optional.
Identity
namestringrequiredThe name of your documentation site. Shown in the browser tab and header.
faviconstringPath to your favicon relative to the project root.
{ "favicon": "/favicon.png" }Logo
Controls the logo shown in the top left of your docs.
logo.lightstringPath to the logo image used in light mode.
logo.darkstringPath to the logo image used in dark mode.
logo.hrefstringURL to navigate to when the logo is clicked. Defaults to the docs root.
"logo": {
"light": "/logo/light.svg",
"dark": "/logo/dark.svg",
"href": "https://example.com"
}Colors
Brand color configuration. Controls the accent colors used throughout your docs.
colors.primarystringBase brand color used as the default accent. Example: #ff5800
colors.lightstringColor variant for light backgrounds — usually darker or more saturated for contrast on white.
colors.darkstringColor variant for dark backgrounds — usually lighter or more vibrant to pop on dark.
colors.background.lightstringBackground color for light mode. Supports CSS gradients.
colors.background.darkstringBackground color for dark mode. Supports CSS gradients.
colors.anchors.fromstringStart color of the anchor icon gradient in the sidebar.
colors.anchors.tostringEnd color of the anchor icon gradient in the sidebar.
"colors": {
"primary": "#ff5800",
"light": "#ff5800",
"dark": "#ff7733",
"background": {
"dark": "radial-gradient(ellipse 80% 50% at 50% -20%, rgba(255,88,0,0.15), transparent), #0c0d0f",
"light": "#ffffff"
},
"anchors": {
"from": "#ff5800",
"to": "#ce0569"
}
}Fonts
Custom font configuration for headings and body text.
font.headings.familystringFont family name for headings. Example: Inter
font.headings.urlstringURL to load the heading font from. Example: a Google Fonts CSS URL.
font.body.familystringFont family name for body text.
font.body.urlstringURL to load the body font from.
"font": {
"headings": {
"family": "Geist",
"url": "https://fonts.googleapis.com/css2?family=Geist"
},
"body": {
"family": "Geist",
"url": "https://fonts.googleapis.com/css2?family=Geist"
}
}Navigation
The sidebar navigation structure. An array of groups each containing pages or nested groups.
navigation[].groupstringrequiredDisplay name of the navigation group shown in the sidebar.
navigation[].iconstringIcon name shown next to the group label.
navigation[].pagesstring[] | NavigationGroup[]requiredPages or nested groups inside this group. Pages are slugs relative to the project root with no file extension — introduction maps to introduction.mdx.
"navigation": [
{
"group": "Getting Started",
"icon": "BookOpen",
"pages": ["introduction", "getting-started"]
},
{
"group": "Guides",
"pages": [
"guides/overview",
{
"group": "Advanced",
"pages": ["guides/advanced/custom-domain"]
}
]
}
]Top Bar
Links
topbarLinks[].namestringrequiredDisplay text for the link.
topbarLinks[].urlstringrequiredURL the link points to.
topbarLinks[].blankbooleanWhether the link opens in a new tab. Defaults to false.
"topbarLinks": [
{ "name": "Support", "url": "https://example.com/support", "blank": true }
]CTA Button
topbarCtaButton.namestringrequiredButton label text.
topbarCtaButton.urlstringrequiredURL the button links to.
topbarCtaButton.style"fill" | "outline"Visual style of the button. Defaults to fill.
topbarCtaButton.arrowbooleanWhether to show an arrow icon next to the label. Defaults to false.
topbarCtaButton.iconstringIcon name to show inside the button.
topbarCtaButton.anchorbooleanPin the button to the right side of the top bar.
"topbarCtaButton": {
"name": "Get Started",
"url": "https://example.com/signup",
"style": "fill",
"arrow": true
}Tabs
Tabs shown below the top navigation bar for switching between major sections.
tabs[].namestringrequiredTab label text.
tabs[].urlstringrequiredURL path this tab links to.
tabs[].iconstringIcon name shown next to the tab label.
tabs[].anchorbooleanPin this tab to the right side of the tab bar.
"tabs": [
{ "name": "Documentation", "url": "/docs", "icon": "BookOpen" },
{ "name": "API Reference", "url": "/api-reference", "icon": "Code2" }
]Anchors
Special links shown at the top of the sidebar before navigation groups. Good for GitHub, Discord, or any external link you want to surface prominently.
anchors[].namestringrequiredDisplay name of the anchor link.
anchors[].urlstringrequiredURL the anchor links to.
anchors[].iconstringIcon name shown next to the anchor.
anchors[].colorstringCustom color for the anchor icon.
"anchors": [
{
"name": "GitHub",
"icon": "Github",
"url": "https://github.com/your-org/your-repo",
"color": "#333333"
},
{
"name": "Discord",
"icon": "MessageCircle",
"url": "https://discord.gg/your-invite",
"color": "#5865f2"
}
]Versions
Show a version switcher in the top bar to let users switch between different versions of your docs.
versionsstring[]List of version identifiers. Each version should have a corresponding folder at the project root.
defaultVersionstringThe version shown by default. Must match one of the values in versions.
json "versions": ["v1", "v2"], "defaultVersion": "v2"
Each version folder should mirror your root docs structure. For example
v2/introduction.mdx serves the introduction page for version v2.
Footer Socials
Social media links shown in the footer.
footerSocials.xstringfooterSocials.githubstringfooterSocials.linkedinstringfooterSocials.discordstringfooterSocials.youtubestringfooterSocials.websitestring"footerSocials": {
"github": "https://github.com/your-org",
"x": "https://x.com/your-handle",
"discord": "https://discord.gg/your-invite"
}SEO
seo.indexHidingbooleanSet to true to prevent search engines from indexing your docs. Defaults to
false.
seo.og.titlestringTitle shown in social media previews.
seo.og.descriptionstringDescription shown in social media previews.
seo.og.imagestringPath to the Open Graph image. Example: /og-image.png
"seo": {
"indexHiding": false,
"og": {
"title": "My Docs",
"description": "Documentation for My Product",
"image": "/og-image.png"
}
}Search
search.promptstringPlaceholder text shown in the search bar. Defaults to Search documentation...
"search": {
"prompt": "Search the docs..."
}Feedback
Let readers rate pages, suggest edits, or raise issues directly from your docs.
feedback.thumbsRatingbooleanShow thumbs up/down rating buttons at the bottom of each page.
feedback.suggestEditbooleanShow a Suggest Edit link that opens the page source on GitHub.
feedback.raiseIssuebooleanShow a Raise Issue link that opens a new GitHub issue.
feedback.webhookstringURL to POST feedback data to when a user submits a rating.
feedback.githubRepostringGitHub repository URL used for Suggest Edit and Raise Issue links.
"feedback": {
"thumbsRating": true,
"suggestEdit": true,
"raiseIssue": true,
"githubRepo": "https://github.com/your-org/your-repo"
}