Skip to content

DCS Configuration Reference

Complete reference for the .dcs/config.yaml configuration file.

Overview

The .dcs/config.yaml file is the main configuration file for DCS-integrated sites. It defines site identity, features, and integration settings.

Schema

yaml
# .dcs/config.yaml
version: 1

site:
  name: string           # Required: Site display name
  slug: string           # Required: Unique URL-safe identifier
  description: string    # Optional: Site description
  url: string            # Optional: Production URL
  
framework:
  type: string          # Required: vitepress | vue | nuxt | react | nextjs
  version: string       # Optional: Framework version
  
content:
  textOverrides: boolean    # Enable text content API
  seoManagement: boolean    # Enable SEO management
  blogEnabled: boolean      # Enable blog features
  
development:
  copilotEnabled: boolean   # Enable GitHub Copilot automation
  autoMerge: boolean        # Auto-merge approved dev requests
  
deployment:
  provider: string          # azure-swa | vercel | netlify
  environments:
    development: object
    production: object
    
integrations:
  analytics: object
  forms: object
  search: object

Properties

site

Site identification and metadata.

PropertyTypeRequiredDefaultDescription
namestringYesDisplay name shown in portal
slugstringYesUnique identifier (lowercase, hyphens)
descriptionstringNoBrief site description
urlstringNoProduction URL
logostringNoPath to logo image

Example:

yaml
site:
  name: Acme Corporation
  slug: acme-corp
  description: Corporate website for Acme Corp
  url: https://www.acmecorp.com
  logo: /images/logo.svg

framework

Framework detection and configuration.

PropertyTypeRequiredDefaultDescription
typestringYesFramework type
versionstringNoFramework version
buildCommandstringNopnpm buildBuild command
outputDirstringNodistBuild output directory

Supported Framework Types:

TypeBuild OutputNotes
vitepress.vitepress/distMarkdown-based docs/blogs
vuedistVue SPA applications
nuxt.outputNuxt 3 applications
reactbuildReact applications
nextjs.nextNext.js applications

Example:

yaml
framework:
  type: vitepress
  version: "1.4.0"
  buildCommand: pnpm run docs:build
  outputDir: docs/.vitepress/dist

content

Content management features.

PropertyTypeRequiredDefaultDescription
textOverridesbooleanNotrueEnable text content API
seoManagementbooleanNotrueEnable SEO management
blogEnabledbooleanNofalseEnable blog features
blogPathstringNo/blogsBlog URL path
pagesPathstringNo.dcs/pages.yamlPages config location

Example:

yaml
content:
  textOverrides: true
  seoManagement: true
  blogEnabled: true
  blogPath: /blog
  pagesPath: .dcs/pages.yaml

development

Development workflow configuration.

PropertyTypeRequiredDefaultDescription
copilotEnabledbooleanNotrueEnable Copilot automation
autoMergebooleanNofalseAuto-merge approved requests
reviewRequiredbooleanNotrueRequire PR review
branchPrefixstringNocopilot/Branch prefix for dev requests
releasePrefixstringNorelease/Branch prefix for releases

Example:

yaml
development:
  copilotEnabled: true
  autoMerge: false
  reviewRequired: true
  branchPrefix: copilot/
  releasePrefix: release/

deployment

Deployment configuration.

PropertyTypeRequiredDefaultDescription
providerstringNoazure-swaDeployment provider
environmentsobjectNoEnvironment configurations

Provider Options:

ProviderValueNotes
Azure Static Web Appsazure-swaDefault, recommended
VercelvercelVercel deployments
NetlifynetlifyNetlify deployments
CustomcustomSelf-managed

Example:

yaml
deployment:
  provider: azure-swa
  environments:
    development:
      url: https://dev.acmecorp.com
      autoDeployBranch: release/*
    production:
      url: https://www.acmecorp.com
      autoDeployBranch: main
      requireApproval: true

integrations

Third-party integrations.

analytics

yaml
integrations:
  analytics:
    provider: google    # google | plausible | fathom
    trackingId: G-XXXXXXXXXX
    respectDNT: true

forms

yaml
integrations:
  forms:
    provider: formspree    # formspree | netlify | custom
    endpoint: https://formspree.io/f/xxxxx
yaml
integrations:
  search:
    provider: algolia      # algolia | meilisearch | pagefind
    appId: XXXXXXXXXX
    indexName: acme-docs

Complete Example

yaml
# .dcs/config.yaml
version: 1

site:
  name: Acme Corporation
  slug: acme-corp
  description: Corporate website and documentation
  url: https://www.acmecorp.com
  logo: /images/logo.svg

framework:
  type: vitepress
  version: "1.4.0"
  buildCommand: pnpm build
  outputDir: .vitepress/dist

content:
  textOverrides: true
  seoManagement: true
  blogEnabled: true
  blogPath: /blog
  pagesPath: .dcs/pages.yaml

development:
  copilotEnabled: true
  autoMerge: false
  reviewRequired: true
  branchPrefix: copilot/
  releasePrefix: release/

deployment:
  provider: azure-swa
  environments:
    development:
      url: https://dev.acmecorp.com
      autoDeployBranch: release/*
    production:
      url: https://www.acmecorp.com
      autoDeployBranch: main
      requireApproval: true

integrations:
  analytics:
    provider: google
    trackingId: G-XXXXXXXXXX
    respectDNT: true
    
  forms:
    provider: formspree
    endpoint: https://formspree.io/f/xxxxx
    
  search:
    provider: pagefind

Minimal Example

yaml
version: 1

site:
  name: My Site
  slug: my-site

framework:
  type: vitepress

Environment Variables

Some values can be overridden via environment:

Config PathEnvironment Variable
site.urlSITE_URL
integrations.analytics.trackingIdANALYTICS_ID
deployment.environments.*.urlDEPLOY_URL

Validation

CLI Validation

bash
dcs config validate

Validation Rules

RuleDescription
version requiredMust be present and valid
site.name requiredNon-empty string
site.slug formatLowercase, alphanumeric, hyphens only
framework.type validMust be supported type

Error Messages

Error: Invalid config
  - site.slug: Must be lowercase with hyphens only
  - framework.type: 'gatsby' is not a supported framework

Migration

From v0 to v1

yaml
# Old format (v0)
name: My Site
type: vitepress

# New format (v1)
version: 1
site:
  name: My Site
  slug: my-site
framework:
  type: vitepress

Best Practices

1. Use Descriptive Names

yaml
site:
  name: Acme Corp Marketing Site  # Clear purpose
  slug: acme-marketing            # Short, unique

2. Environment-Specific URLs

yaml
deployment:
  environments:
    development:
      url: https://dev.example.com
    staging:
      url: https://staging.example.com
    production:
      url: https://example.com

3. Explicit Feature Flags

yaml
content:
  textOverrides: true    # Be explicit
  seoManagement: true
  blogEnabled: false     # Clearly disabled

Troubleshooting

Config Not Found

Error: .dcs/config.yaml not found

Solution: Create the file in your repository root.

Invalid YAML

Error: Invalid YAML syntax at line 15

Solution: Check for proper indentation and syntax.

Unknown Framework

Error: framework.type 'hugo' is not supported

Solution: Use a supported framework type or custom.

Next Steps

Duff Cloud Services Documentation