Configuration Reference

Configuration is loaded from src/site.json by config.load() in base/src/config.js. Root type: ShevkyConfig (base/src/config.d.ts).

identity

KeyTypeDefaultDescription
authorstring"<name> <surname>"Author name for meta tags
emailstring"<name>@<surname>.net"Public contact email
urlstring"http://localhost:3000"Canonical site URL
themeColorstring"#5a8df0"Theme color meta tag
social.rssbooleanfalseShow RSS link
social.githubstring""GitHub profile URL
social.linkedinstring""LinkedIn profile URL
social.xstring""X/Twitter URL
social.facebookstring""Facebook URL
social.instagramstring""Instagram URL
social.youtubestring""YouTube URL
social.tiktokstring""TikTok URL
social.substackstring""Substack URL
social.mediumstring""Medium URL
social.devtostring""Dev.to URL
social.stackoverflowstring""Stack Overflow URL
social.mastodonstring""Mastodon URL

seo

KeyTypeDefaultDescription
defaultImagestring""Fallback OG/Twitter image
includeCollectionsbooleanfalseInclude collection URLs in sitemap
includePagingbooleanfalseInclude pagination URLs in sitemap
footerTagCountnumber8Tags shown in footer

analytics

KeyTypeDefaultDescription
enabledbooleanfalseMaster analytics toggle
gtmIdstring""Google Tag Manager ID
gaIdstring""Google Analytics ID
clarityIdstring""Microsoft Clarity ID
metaPixelIdstring""Meta Pixel ID

features

KeyTypeDefaultDescription
searchbooleanfalseEnable global search
postOperations.enabledbooleanfalseEnable post interactions
postOperations.likebooleanfalseLike action
postOperations.dislikebooleanfalseDislike action
postOperations.commentbooleanfalseComment action
postOperations.share.enabledbooleanfalseShare buttons
postOperations.share.whatsappbooleanfalseWhatsApp share
postOperations.share.xbooleanfalseX/Twitter share
postOperations.share.linkedinbooleanfalseLinkedIn share
postOperations.share.facebookbooleanfalseFacebook share
postOperations.share.copybooleanfalseCopy link

markdown

KeyTypeDefaultDescription
highlightbooleanfalseSyntax highlighting via highlight.js

content

KeyTypeDefaultDescription
pagination.pageSizenumber10Items per listing page
pagination.segment.trstring"sayfa"Turkish pagination URL segment
pagination.segment.enstring"page"English pagination URL segment
languages.defaultstring"tr"Default language
languages.supportedstring[]["tr", "en"]Supported languages
languages.canonicalRecord{ tr: "/", en: "/en/" }Canonical path per language
collections.includeContentFilebooleanfalseInclude full file data in collections

build

KeyTypeDefaultDescription
minifybooleanfalseMinify HTML/CSS/JS output
debugbooleanfalseEnable debug logging
pageBufferLimitnumber20Pages buffered before disk flush
outputAliasesArray<{from, to}>[]Post-build path aliases
contentRootDirectoriesstring[][".well-known"]Directories copied to dist root

robots

KeyTypeDefaultDescription
allowstring[]["/"]Allowed crawler paths
disallowstring[][]Disallowed crawler paths

ui

Open-ended Record<string, unknown> passed to templates as site.ui.

plugins

Array of npm package names (or relative paths) loaded by PluginRegistry.load().

pluginConfigs

Plugin settings keyed by plugin runtime name:

  • shevky-rss: feedFilename, feedTtl, feedItemCount, includedSchemaTypes, includedCategories
  • shevky-sitemap: sitemapFilename
  • shevky-content-bridge: sources[], maxItems, output
  • shevky-open-graph: twitterSite, defaultTwitterCard, defaultImage, force, siteName, publisherType, exposePageMeta, enableSearchAction, and more

Config Resolution

config.get(key) order: top-level key -> pluginConfigs[key] -> built-in fallback.

Related