Atelier

Deployments

Server-side builds, immutable bundles, atomic publish. Every deploy is reversible — the previous version stays alive until the new one is fully uploaded, and canary rollouts catch regressions before they reach all users.

The pipeline

Studio "Deploy" click
  → BuildService stages workspace
  → npm install + vite build (server-side)
  → pending migrations applied to production DB (idempotent)
  → manifest (path / size / sha256) + logs
  → status: building → built
  → AppBundleStore upload (S3)
  → status: built → uploading → canary
  → traffic shifts: 5% → 25% → 50% → 100%
  → previous deployment marked superseded

Deployment lifecycle

StatusMeaning
buildingBuild job running on the server.
builtBundle assembled, awaiting upload.
uploadingBundle being uploaded to S3.
canaryLive to a portion of traffic, watching error rate and latency.
liveLive to 100% of traffic.
supersededA newer deployment is live. Bundle retained for rollback.
failedBuild, upload, or canary regression. Previous version remains live.

Atomic & reversible

Live URL routing reads from a registry — flipping it from one SHA to another is a single write. There is no in-between state where users see a partially-uploaded bundle. Rollback is the same write in the other direction.

Canary rollouts

Every deploy ships through traffic-weighted stages — by default 5%, 25%, 50%, 100% with a short observation window between each. Base watches error rate and P95 latency; if either regresses against the previous deploy, the rollout pauses and rolls back automatically.

Override per project:

// atelier.config.ts
export default {
  deployments: {
    canary: {
      stages: [10, 50, 100],
      observationWindowSec: 300,
      autoRollback: {
        errorRateThreshold: 0.02,
        latencyP95Threshold: 1.5, // x baseline
      },
    },
  },
};

For low-risk changes, set canary: 'skip' and Base publishes directly to 100%.

URLs

Production:  https://<slug>.apps.atelier.style
Custom:      https://your-domain.com (after DNS verification)
Branch:      https://<slug>-pr-42.apps.atelier.style (per PR)
Custom domains

Three steps — TXT verify, route the CNAME (or ALIAS at apex), certificate auto-provisioned. Apex, www, wildcard, per-tenant. See Custom domains for the full walkthrough.

Environment variables

Set per-environment in the Base console. Available inside Functions and the build step; not exposed to the browser unless prefixed with NEXT_PUBLIC_ or your framework’s equivalent.

Rollback

Open the deployment history in the Base console. Each historic deploy has a Promote button — the live URL flips back instantly, no rebuild.

Observability

Every deploy carries a build SHA that propagates to logs, traces, and error reports. When something breaks at 3am, you can find the exact deploy, the exact change, and the diff that introduced it.