Skip to content

Core Concepts

Understanding these key concepts will help you get the most out of DCS.

Sites

A site is a website managed through DCS. Each site has:

  • A unique slug (e.g., my-company-website)
  • An associated GitHub repository containing the source code
  • Azure Static Web Apps resources for hosting (development and production)
  • Text overrides for real-time content editing
  • SEO metadata for search optimization

Site Types

DCS supports different site architectures:

TypeDescriptionExample
VitePressDocumentation-style sites with markdownCompany blogs, docs
Vue SPASingle-page applicationsWeb apps, dashboards
StaticPre-rendered HTML sitesMarketing sites

Companies

Sites belong to companies in DCS. A company represents an organization that owns one or more sites.

Company Roles

RolePermissions
OwnerFull access, billing, user management
AdminSite management, dev requests, content
EditorContent editing, blog management
ViewerRead-only access to analytics

Text Keys

Text keys are identifiers for editable text regions on your site. They follow a hierarchical naming convention:

{page}.{section}.{element}

Examples:

  • home.hero.title — The main heading on the home page
  • about.team.description — Team description on the about page
  • footer.copyright — Copyright text in the footer

Text Overrides

When you edit text in the portal, you create a text override. The site fetches these overrides at runtime and displays them instead of the default text.

Default Text (in code) → Text Override (from API) → Displayed Text

Change Lifecycle

Content changes in DCS follow a defined lifecycle:

saved → pending → committed → released
StatusDescriptionRevertible
SavedEdit created in portalDiscard anytime
PendingAwaiting commit to codeDiscard or commit
CommittedMerged to release branchRevert via rollback
ReleasedLive in productionRevert via rollback

Development Requests

When changes require code modifications, you create a development request. These are analyzed by AI to determine the best approach:

Request Types

TypeDescriptionAutomation
Text OverrideSimple text changesConsolidated in build
Widget ConfigConfiguration changesAutomated via Copilot
New WidgetNew UI componentAutomated via Copilot
New PageNew page creationAutomated via Copilot
Layout ChangeStructural changesAutomated via Copilot

Automation Flow

Request → Intent Analysis → GitHub Issue → Copilot → PR → Review → Deploy

Release Branches

DCS uses release branches to manage deployments:

main (production)
  └── release/1.2.0 (development)
        └── copilot/feature-123 (automated work)
  • main — Production code, always stable
  • release/X.Y.Z — Development version being worked on
  • copilot/ — Branches created by automation

Semantic Versioning

Sites follow semantic versioning:

  • MAJOR (1.0.0) — Breaking changes
  • MINOR (1.1.0) — New features
  • PATCH (1.1.1) — Bug fixes, text changes

Deployment Environments

Each site has multiple environments:

EnvironmentPurposeURL Pattern
ProductionLive siteexample.com
DevelopmentPreview changesdev.example.com
DraftPer-PR previewspr-123.example.com

Deployment Flow

Code Change → Build → Deploy to Dev → Review → Approve → Deploy to Production

APIs

DCS provides several APIs for site integration:

Text Content API

Fetch text overrides for a site:

http
GET /api/sites/{siteId}/text-content

SEO API

Fetch SEO metadata for a page:

http
GET /api/sites/{siteId}/seo/{pageSlug}

Blog API

Fetch blog posts:

http
GET /api/sites/{siteId}/blog/posts

Integration Points

The useTextContent Composable

For Vue/VitePress sites, this composable provides text override functionality:

ts
const { t, isLoading } = useTextContent()

// t(key, defaultValue) returns the override or default
const title = t('page.title', 'Default Title')

GitHub Webhooks

DCS listens for GitHub events to:

  • Track PR status for development requests
  • Trigger deployments on branch updates
  • Update request status when PRs merge

Azure Integration

DCS integrates with Azure for:

  • Static Web Apps hosting
  • Blob storage for assets
  • Table storage for data
  • Authentication via Entra ID

Next Steps

Now that you understand the concepts:

Duff Cloud Services Documentation