builder / docs /SITE_PUBLISHING.md
Leon4gr45's picture
Upload folder using huggingface_hub (part 2)
391c43e verified
|
Raw
History Blame Contribute Delete
6.54 kB
# 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