Appearance
Quick Start
Get your site connected to DCS in just a few minutes. This guide covers the essential steps for both site owners and partners.
For Site Owners
If your site is already set up on DCS, you can start managing content immediately:
1. Access the Portal
Navigate to portal.duffcloudservices.com and sign in. Google sign-in is always available; GitHub and passkey (WebAuthn) sign-in are also supported, and Microsoft sign-in is offered where enabled.
2. Select Your Site
From the dashboard, click on your site to open the Site Manager.
3. Start Editing
- Text Content — Click "Text Overrides" to edit any text on your site
- SEO Settings — Click "SEO & Metadata" to update page titles and descriptions
- Blog Posts — Click "Blog" to create or edit posts
Text and SEO edits are made in the visual editor and queued for the next deployment — Save records your change; it goes live when the site is deployed. Blog posts can be saved as drafts or published.
For Partners
Setting up a new site integration is streamlined with the official npm packages:
1. Prerequisites
Ensure you have:
- A VitePress-based website (or compatible Vue framework)
- Access to the site's GitHub repository
- Node.js >= 18.0.0
- A DCS partner account
2. Install the CLI
Install the DCS CLI globally:
bash
npm install -g @duffcloudservices/cli3. Authenticate
bash
dcs loginFollow the prompts to sign in with Google OAuth.
4. Initialize Your Site
Navigate to your site's repository and run:
bash
cd /path/to/your-site
dcs init --site-slug your-site-slug --site-name "Your Site Name"This creates all necessary configuration files in .dcs/ and integration guides in .plans/.
5. Install the CMS Package
bash
pnpm add @duffcloudservices/cms6. Configure Vite Plugins
For VitePress sites, update .vitepress/config.ts:
typescript
import { defineConfig } from 'vitepress'
import { dcsContentPlugin, dcsSeoPlugin } from '@duffcloudservices/cms/plugins'
export default defineConfig({
vite: {
plugins: [
dcsContentPlugin(),
dcsSeoPlugin()
]
}
})7. Use the Composables
Replace manual text content handling with the official composable:
vue
<script setup lang="ts">
import { useTextContent, useSEO } from '@duffcloudservices/cms'
const { t } = useTextContent({
pageSlug: 'home',
defaults: {
'hero.title': 'Welcome to Our Site',
'hero.description': 'Default description text'
}
})
// Apply SEO meta tags
const { applyHead } = useSEO('home')
applyHead()
</script>
<template>
<h1>{{ t('hero.title') }}</h1>
<p>{{ t('hero.description') }}</p>
</template>8. Validate Configuration
bash
dcs validate9. Set Up GitHub Integration
Deployment uses OIDC federated credentials — no long-lived Azure secret is stored in the repo. dcs init writes the three non-secret Azure identifiers into .dcs/site.yaml; you can alternatively set them as repository Variables:
bash
# Repository Variables (not Secrets) — or set these in .dcs/site.yaml
AZURE_CLIENT_ID=<app-registration-client-id>
AZURE_TENANT_ID=<your-tenant-id>
AZURE_SUBSCRIPTION_ID=<your-subscription-id>The generated deploy workflow authenticates with azure/login@v2 and requires permissions: id-token: write. See GitHub Setup for the federated-credential setup.
10. Register with DCS
Contact the DCS team to complete site registration, which includes:
- Creating the site record in the portal
- Setting up Azure Static Web Apps resources
- Configuring deployment workflows
Verifying Your Setup
Test Text Overrides
- Log into the portal and navigate to your site
- Go to "Text Overrides"
- Create an override for one of your text keys
- Refresh your site — you should see the new text
Test Development Requests
- Go to "Development Requests"
- Click "New Request"
- Describe a simple change (e.g., "Change the button color to blue")
- Submit and watch the automation in action
Next Steps
- Core Concepts — Understand how DCS works under the hood
- Partner Onboarding Guide — Complete walkthrough for new sites
- CMS Package Reference — Full API documentation
- CLI Package Reference — All commands and options
- Portal Guide — Learn all the portal features
