# Deployment Publishing Publish and configure deployments directly from OSW Studio in **Server Mode**. --- ## Overview Server Mode lets you publish static sites directly from your OSW Studio instance. Each deployment gets its own URL, configurable settings for analytics, SEO, compliance, and more. **Key Features:** - **One-click publishing** - Compile and deploy instantly - **Deployment settings** - Scripts, CDN resources, analytics - **SEO optimization** - Meta tags, Open Graph, sitemaps - **Compliance** - Cookie consent, GDPR/CCPA banners - **Custom domains** - Use your own domain (advanced) --- ## Creating a Deployment ### From Projects View 1. Right-click on a project card 2. Select **"Create Deployment"** 3. Enter deployment name 4. Click **"Create Deployment"** ### From Deployments View 1. Click **"+ New Deployment"** button 2. Select source project 3. Enter deployment details 4. Click **"Create Deployment"** --- ## Publishing Workflow 1. Create/edit deployment settings 2. Click **"Save & Close"** 3. Click **"Publish Now"** (or right-click deployment → Publish) 4. Static builder runs: - Loads project files from server - Compiles Handlebars templates (partials from `/templates/`, context from `/data.json`) - Uses pre-built `bundle.js` for framework runtimes (React, Preact, Svelte, Vue) - Rewrites internal links to include `/deployments/{id}/` prefix - Injects configured settings (scripts, analytics, SEO) - Generates sitemap.xml and robots.txt - Writes to `/public/deployments/{id}/` 5. Site is live! **Note**: Python and Lua projects cannot be published — they run only in the browser's WASM runtime. Use ZIP export for offline distribution instead. ### Accessing Published Deployments **Default URL:** ``` https://your-osw-instance.com/deployments/{id}/ ``` **Clean URLs** (Next.js rewrites): ``` /deployments/{id}/about → /deployments/{id}/about.html /deployments/{id}/blog/post → /deployments/{id}/blog/post.html ``` --- ## Deployment Settings Access deployment settings by clicking the gear icon on any deployment card, or right-click → Settings. ### General - **Deployment name** - Display name for the deployment - **URL slug** - Optional custom slug - **Custom domain** - For advanced setups (see below) - **Under construction** - Show maintenance page ### Scripts Add custom scripts to your deployment's HTML: **Head Scripts:** - Analytics code - Meta tag generators - Preload hints **Body Scripts:** - Chat widgets - Tracking pixels - Third-party integrations **Options:** - Inline or external URL - Async/defer loading - Enable/disable per script ### CDN Resources Load external CSS and JavaScript libraries: - Bootstrap, Tailwind CDN - Font Awesome, Material Icons - jQuery, Alpine.js - Google Fonts **Configuration:** - Resource URL - Type (CSS or JS) - Integrity hash (optional) - Crossorigin setting ### Analytics Track visitors with built-in or third-party analytics: **Built-in Analytics** (privacy-focused): - No cookies required - Basic pageview tracking - Referrer tracking - Privacy mode option **Third-party Providers:** - Google Analytics 4 - Google Tag Manager - Plausible - Custom tracking code **Enhanced Features** (toggleable): - Heatmaps - Session recording - Performance metrics - Engagement tracking - Custom events **Data Retention:** - Configurable retention periods - Pageviews: 90 days default - Interactions: 30 days default - Sessions: 60 days default ### SEO Optimize your deployment for search engines: **Meta Tags:** - Title - Description - Keywords **Open Graph:** - OG Title - OG Description - OG Image **Twitter Card:** - Summary or Large Image **Advanced:** - Canonical URL - noindex/nofollow options **Auto-generated:** - sitemap.xml - robots.txt ### Compliance GDPR/CCPA cookie consent and privacy compliance: **Banner Settings:** - Position: Top, Bottom, or Corner - Style: Bar, Modal, or Corner popup - Custom message text - Accept/Decline button text **Behavior:** - Opt-in mode (block until consent) - Opt-out mode (allow until decline) - Block analytics until consent **Policy Links:** - Privacy policy URL - Cookie policy URL --- ## Managing Deployments ### Deployment Actions Right-click any deployment card for actions: | Action | Description | |--------|-------------| | **View Live** | Open published site in new tab | | **Settings** | Configure deployment options | | **Republish** | Rebuild and deploy | | **Copy Link** | Copy deployment URL to clipboard | | **View Source** | Open source project | | **Analytics** | View deployment analytics dashboard | | **Capture Thumbnail** | Update preview image | | **Unpublish** | Disable deployment (keeps settings) | | **Delete** | Permanently remove deployment | ### Unpublish vs Delete - **Unpublish**: Disables the deployment but preserves all settings. You can re-publish later. - **Delete**: Permanently removes the deployment and all its settings. ### Version Tracking Each deployment shows: - **Settings Version**: Current configuration version - **Published Version**: Last published version If these differ, the deployment has unpublished changes. --- ## Custom Domains Use a custom domain (e.g., `sweetcandies.com`) for your published deployment. Enter the domain in Deployment Settings, add a DNS A record, and publish. See [Custom Domains Guide](CUSTOM_DOMAINS.md) for full details. --- ## Troubleshooting ### Publishing Errors **Symptoms**: Deployment not building, empty `/public/deployments/` **Solutions**: 1. Check build logs in terminal 2. Verify project has files synced to server 3. Check Handlebars syntax in templates 4. Verify disk permissions: ```bash ls -la public/ chmod 755 public/ ``` 5. Check available disk space: ```bash df -h ``` ### Deployment Not Updating After Republish **Symptoms**: Changes not showing on published site **Solutions**: 1. Hard refresh browser (Ctrl+Shift+R) 2. Check `settingsVersion` vs `lastPublishedVersion` in deployment card 3. Verify "Publish" was clicked (not just "Save") 4. Check build succeeded in terminal logs 5. Inspect HTML source for changes 6. Clear CDN cache (if using one) ### Custom Domain Not Working See troubleshooting section in [Custom Domains Guide](CUSTOM_DOMAINS.md#troubleshooting). --- ## Next Steps - **[Backend](?doc=backend-features)** - Database, edge functions, secrets - **[Server Mode](?doc=server-mode)** - Setup and deployment - **[Troubleshooting](?doc=troubleshooting)** - Fix common issues