Skip to main content
LisibleDocumentation
Live previewer

Getting started

Initial configuration

Configure the variant, site identity, repository, integrations and feature flags in lisible.config.json.

The whole user configuration lives in one file: lisible.config.json at the repository root. Every field except variant is optional; whatever is absent falls back to a sensible default, so a fresh checkout builds unchanged.

The JSON schema referenced by $schema documents every field and powers editor autocompletion:

lisible.config.json
{
"$schema": "./docs/lisible.config.schema.json",
"variant": "organique",
"site": {
"title": "My blog",
"url": "https://blog.example.com",
"author": "Ada Lovelace",
"accent": "#22C55E"
},
"social": { "github": "https://github.com/you" },
"features": { "comments": false, "portfolio": { "friends": false } },
"repo": { "url": "https://github.com/you/your-blog" }
}

The setup assistant writes this file for you; editing it by hand is equally supported.

Active variant

variant is the single required choice:

lisible.config.json
{
"variant": "organique"
}

Public values: motion-primitives, cult-ui, aceternity, reactbits, organique, h4x0r. Deployment platforms can override it without touching the file through the LISIBLE_VARIANT environment variable.

Site identity

The site object defines the title, canonical URL, author, accent color, list sizes (postsPerPage, featuredCount) and default cover position. The social object holds the public profiles shown in the footer, and repo points edit links at your repository and branch.

Feature flags

The features object enables common capabilities. A flag controls more than presentation: it may gate routes, Markdown plugins and client assets, and a disabled feature leaves no trace in the built output. The complete reference lists every flag with its effect.

lisible.config.json (excerpt)
{
"features": {
"imageZoom": true,
"mermaid": true,
"ogPerPost": true,
"pagination": { "enabled": true, "pageSize": 6 },
"comments": false,
"webmentions": false,
"demoPlaceholders": true
}
}

Integrations with secrets

Giscus, Bluesky or webmention.io identifiers belong in the integrations object. Never commit a private key. Public configuration values may stay in the repository, while secrets should come from environment variables. Enabling comments or webmentions without their configuration fails the build with a clear error.

A fresh clone displays fully local example comments and webmentions. Replace the profiles in social, fill the live integration, enable its flag, then set demoPlaceholders to false. This keeps third-party scripts and invalid network calls out of the development server.

Derived shared surfaces

shared/config.ts reads and validates lisible.config.json at build time; shared/site.config.ts and shared/features.ts only re-export values derived from it. You should never need to edit files under shared/ to configure a site: if a value seems missing, it belongs in the JSON file or in the schema, not in a shared module.

Final check

Terminal window
bun run variant
bun run build

The build is the reference validation: it traverses every route, the content schema, images, Markdown pipeline and Pagefind index.

Documentation maintained with LisibleEdit this page ↗

Actions

Search for an API, a command or a concept.