Configuration
The docs-config.json file controls the global settings of your site.
Configuration Structure
Lito’s configuration is divided into two categories:
- Core Config - Portable across all templates (guaranteed to work)
- Extensions - Template-specific features (templates ignore what they don’t support)
This means you can swap templates without changing your docs - core config always works, and unsupported extensions are simply ignored.
Core Configuration
These options are supported by ALL Lito templates:
| Property | Type | Required | Description |
|---|---|---|---|
metadata | object | Yes | Site meta information. |
branding | object | No | Logo, favicon, and primary color. |
navigation | object | No | Sidebar and navbar structure. |
search | object | No | Search configuration. |
seo | object | No | SEO and social sharing settings. |
i18n | object | No | Internationalization settings. |
assets | object | No | Asset folder configuration. |
Extensions (Template-Specific)
These options are template-specific. Templates that don’t support them will simply ignore the configuration:
| Property | Type | Description |
|---|---|---|
footer | object | Footer layout and links. |
theme | object | Extended theme options. |
landing | object | Landing page configuration. |
integrations | object | Analytics, feedback, copy page. |
versioning | object | Documentation versioning. |
metadata (Required)
"metadata": { "name": "Site Name", "description": "Site description", "url": "https://docs.example.com", "version": "1.0.0"}| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Site name (appears in title and meta tags). |
description | string | No | Default site description for SEO. |
url | string | No | Base URL for canonical URLs and OG tags. |
version | string | No | Documentation version. |
branding
"branding": { "logo": { "light": "/logo-light.svg", "dark": "/logo-dark.svg", "href": "/" }, "favicon": "/favicon.svg", "colors": { "primary": "#6366f1" }, "fonts": { "heading": "Syne", "body": "Inter", "code": "Fira Code" }}| Property | Type | Description |
|---|---|---|
logo.light | string | Logo for light mode. |
logo.dark | string | Logo for dark mode. |
logo.href | string | Link when clicking the logo. |
favicon | string | Favicon path. |
colors.primary | string | Primary brand color. |
fonts.heading | string | Heading font (any Google Font). Default: Syne. |
fonts.body | string | Body text font (any Google Font). Default: Inter. |
fonts.code | string | Code block font (any Google Font). Default: Fira Code. |
navigation
"navigation": { "navbar": { "links": [ { "label": "GitHub", "href": "https://github.com/..." } ], "cta": { "label": "Get Started", "href": "/introduction" } }, "sidebar": [ { "label": "Getting Started", "items": [ { "label": "Installation", "href": "/getting-started/installation" }, { "label": "Quick Start", "href": "/getting-started/quick-start" } ] } ]}Sidebar Items
| Property | Type | Description |
|---|---|---|
label | string | Display text. |
href | string | Page URL or external link. |
slug | string | Page slug (alternative to href). |
icon | string | Iconify icon name (e.g., lucide:home). |
method | string | HTTP method for API docs (GET, POST, etc.). |
items | array | Nested items for sub-groups. |
Anchors
Anchors are top-level navigation sections displayed above the sidebar. They filter sidebar groups so each anchor shows only its relevant pages:
"navigation": { "anchors": [ { "label": "Documentation", "href": "/introduction", "icon": "lucide:book-open", "groups": ["Introduction", "Getting Started", "Guides", "Reference"] }, { "label": "API Reference", "href": "/api", "icon": "lucide:code", "color": "#3b82f6", "groups": ["API Reference"] } ]}| Property | Type | Description |
|---|---|---|
label | string | Display text. |
href | string | Default link for this anchor. |
icon | string | Iconify icon name. |
color | string | Optional accent color for the anchor. |
external | boolean | Whether this links externally. |
groups | string[] | Sidebar group labels to show when this anchor is active. |
Locale-Specific Sidebars
You can define different sidebars per locale:
"navigation": { "sidebar": [...], "sidebar.es": [...], "sidebar.fr": [...]}search
"search": { "enabled": true, "provider": "local", "placeholder": "Search docs..."}| Property | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable search. |
provider | string | local | Search provider (local or algolia). |
placeholder | string | Search... | Search input placeholder. |
seo
"seo": { "ogImage": "/og-image.png", "twitterHandle": "@yourhandle", "defaultAuthor": "Your Name", "defaultKeywords": ["docs", "api"], "enableJsonLd": true, "organizationName": "Your Org", "articleType": "TechArticle", "autoCanonical": true, "enableBreadcrumbs": true, "autoOgImages": true}| Property | Type | Default | Description |
|---|---|---|---|
ogImage | string | - | Default Open Graph image. |
twitterHandle | string | - | Twitter handle for twitter:creator. |
twitterSite | string | - | Twitter site handle. |
defaultAuthor | string | - | Default author name. |
defaultKeywords | string[] | - | Default keywords for all pages. |
enableJsonLd | boolean | true | Enable JSON-LD structured data. |
organizationName | string | - | Organization name for JSON-LD. |
organizationLogo | string | - | Organization logo URL. |
articleType | string | TechArticle | TechArticle or Article. |
autoCanonical | boolean | true | Auto-generate canonical URLs. |
enableBreadcrumbs | boolean | true | Enable breadcrumb JSON-LD. |
autoOgImages | boolean | false | Auto-generate Open Graph images for every page (1200x630px, uses your primary color). |
i18n
"i18n": { "defaultLocale": "en", "locales": ["en", "es", "fr"], "routing": { "prefixDefaultLocale": false }, "translations": { "es": { "search.placeholder": "Buscar..." } }}| Property | Type | Default | Description |
|---|---|---|---|
defaultLocale | string | en | Default locale. |
locales | string[] | ["en"] | Supported locales. |
routing.prefixDefaultLocale | boolean | false | Include default locale in URLs. |
translations | object | - | Custom UI translations per locale. |
assets
"assets": { "images": "_images", "css": "_css", "static": "_assets"}| Property | Type | Default | Description |
|---|---|---|---|
images | string | _images | Images folder name. |
css | string | _css | CSS folder name. |
static | string | _assets | Static assets folder. |
Extensions
landing
Configure your landing page. Lito supports multiple landing page approaches:
Option 1: Config-Based Landing (Simple)
Define your landing page directly in the config:
"landing": { "enabled": true, "hero": { "title": "Your Product", "subtitle": "A brief description", "version": "v2.0", "cta": [ { "label": "Get Started", "href": "/docs", "variant": "primary" }, { "label": "GitHub", "href": "https://github.com", "variant": "secondary" } ] }, "features": [ { "title": "Feature Name", "description": "Feature description", "icon": "rocket" } ]}Option 2: Full Custom Landing (HTML/CSS/JS)
For complete control, create a _landing/ folder with your own HTML, CSS, and JavaScript:
docs/├── _landing/│ ├── index.html # Main landing structure│ ├── styles.css # Landing styles (scoped)│ ├── script.js # Interactions│ └── assets/ # Images, icons└── docs-config.jsonConfigure in docs-config.json:
"landing": { "type": "custom", "source": "_landing", "injectNav": true, "injectFooter": true}Option 3: Section-Based Landing (Mix & Match)
Combine custom HTML sections with default template components:
"landing": { "type": "sections", "sections": [ { "type": "hero", "source": "default" }, { "type": "custom", "html": "_landing/features.html" }, { "type": "cta", "source": "default" }, { "type": "custom", "html": "_landing/pricing.html" }, { "type": "testimonials", "source": "default" } ]}Landing Configuration Options
| Property | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable landing page. |
type | string | config | Landing type: custom, sections, config, default, none. |
source | string | _landing | Folder path for custom landing. |
injectNav | boolean | true | Include site navbar on custom landing. |
injectFooter | boolean | true | Include site footer on custom landing. |
hero | object | - | Hero section config (for config type). |
features | array | - | Features list (for config type). |
sections | array | - | Section definitions (for sections type). |
Available Section Types
Templates should support these section types for section-based landings:
| Section | Description |
|---|---|
hero | Main hero with title, subtitle, CTA buttons |
features | Feature grid or list |
cta | Call-to-action banner |
testimonials | Customer testimonials |
pricing | Pricing tables |
faq | Frequently asked questions |
stats | Statistics/metrics display |
logos | Partner/client logos |
comparison | Feature comparison table |
footer
"footer": { "layout": "full", "tagline": "Beautiful docs made simple", "copyright": "© {year} Your Company", "showBranding": true, "showVersion": true, "socials": { "github": "https://github.com/...", "twitter": "https://twitter.com/...", "discord": "https://discord.gg/...", "linkedin": "https://linkedin.com/...", "youtube": "https://youtube.com/..." }, "links": [ { "title": "Resources", "items": [ { "label": "Documentation", "href": "/docs" } ] } ], "bottomLinks": [ { "label": "Privacy Policy", "href": "/privacy" }, { "label": "Terms of Service", "href": "/terms" } ]}| Property | Type | Default | Description |
|---|---|---|---|
layout | string | full | Footer layout: full, compact, or centered. |
tagline | string | - | Short tagline text. |
copyright | string | - | Copyright text. {year} is replaced with current year. |
showBranding | boolean | true | Show “Powered by Lito” branding. |
showVersion | boolean | false | Show site version in footer. |
socials | object | - | Social media links (github, twitter, discord, linkedin, youtube). |
links | array | - | Footer link columns, each with title and items. |
bottomLinks | array | - | Links displayed at the very bottom (e.g. legal pages). |
theme
"theme": { "mode": "auto", "defaultDark": false, "hideToggle": false, "primaryColor": "#6366f1", "accentColor": "#22d3ee"}| Property | Type | Default | Description |
|---|---|---|---|
mode | string | auto | Theme mode: light, dark, or auto (system preference). |
defaultDark | boolean | false | Default to dark mode when mode is auto. |
hideToggle | boolean | false | Hide the theme toggle button. |
primaryColor | string | - | Override primary brand color. |
accentColor | string | - | Override accent color. |
integrations
The integrations object controls built-in features for analytics, page feedback, edit links, and more.
integrations.analytics
See the Analytics Guide for full provider documentation. Supports: google-analytics, posthog, clarity, plausible, umami, fathom.
"integrations": { "analytics": { "provider": "google-analytics", "measurementId": "G-XXXXXXXXXX" }}integrations.editPage
Add an “Edit this page” link to every doc page, pointing to your Git repository.
"integrations": { "editPage": { "enabled": true, "pattern": "https://github.com/your-org/docs/edit/main/{path}" }}| Property | Type | Description |
|---|---|---|
enabled | boolean | Enable edit page links. |
pattern | string | URL pattern. {path} is replaced with the file path. |
integrations.lastUpdated
Show a “Last updated” timestamp on each page (derived from file modification time).
"integrations": { "lastUpdated": { "enabled": true, "format": "long" }}| Property | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable last updated display. |
format | string | long | Date format: long, short, or relative. |
integrations.feedback
Enable a “Was this page helpful?” feedback widget.
"integrations": { "feedback": { "enabled": true, "webhookUrl": "https://hooks.example.com/feedback" }}| Property | Type | Description |
|---|---|---|
enabled | boolean | Enable feedback widget. |
webhookUrl | string | Optional webhook URL to receive feedback data. |
integrations.rss
Generate an RSS feed at /rss.xml from your sidebar navigation.
"integrations": { "rss": { "enabled": true, "title": "My Docs Feed", "description": "Latest documentation updates", "limit": 50 }}| Property | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable RSS feed generation. |
title | string | Site name | Feed title. |
description | string | Site description | Feed description. |
limit | number | 50 | Maximum number of items in the feed. |
integrations.llmsTxt
Generate an llms.txt file for LLM-friendly site indexing.
"integrations": { "llmsTxt": { "enabled": true, "title": "My Documentation", "description": "Complete docs for My Product" }}| Property | Type | Description |
|---|---|---|
enabled | boolean | Enable llms.txt generation. |
title | string | Title for the llms.txt file. |
description | string | Description for the llms.txt file. |
integrations.copyPage
A floating widget that lets visitors copy the current page content — useful for pasting into AI assistants.
"integrations": { "copyPage": { "enabled": true, "position": "bottom-right", "aiProviders": [ { "name": "chatgpt", "label": "ChatGPT", "icon": "simple-icons:openai" }, { "name": "claude", "label": "Claude", "icon": "simple-icons:anthropic" } ], "contextPrompt": "You are a helpful assistant. Use the following documentation to answer questions:" }}| Property | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable copy-page widget. |
position | string | bottom-right | Widget position: bottom-right, bottom-left, top-right, top-left. |
aiProviders | array | - | AI provider buttons to display. |
contextPrompt | string | - | System prompt prepended when copying for AI. |
versioning
"versioning": { "enabled": true, "defaultVersion": "latest", "versions": [ { "id": "latest", "label": "Latest", "path": "latest" }, { "id": "v1", "label": "v1.0", "path": "v1", "deprecated": true } ], "versionBanner": { "enabled": true, "message": "You are viewing docs for an older version." }}