Ship

The infrastructure is part of the repo.

config/cloud.ts describes the site, the DNS, the certificates, the CDN, and the mail records in TypeScript. buddy deploy builds every surface and publishes that infrastructure, so the thing that runs in production is described by a file you can review in a pull request.

What you get.

All of it in the same install, with nothing to wire together first.

One command

buddy deploy checks prerequisites, resolves the environment, builds the web, docs, blog, and API, then publishes the infrastructure.

DNS and TLS

Records and certificates are declared next to the site they belong to, so a new hostname is a config line rather than a console visit.

CDN and storage

Buckets, distributions, and cache invalidation come from the same config the application reads.

Mail records

SES identities plus the SPF, DKIM, and DMARC records that make them deliver, published with everything else.

Server or serverless

The same application deploys to a long-running server or to Lambda, chosen in config.

Push to deploy

The shipped CI workflow runs buddy deploy on every green push to main, and finishes green with a notice when a repo has no deploy secrets yet.

From the command line.

Buddy scaffolds, runs, and ships this the same way it does the rest of the app.

buddy deploy buddy cloud --diff buddy domains:add example.com

These share the same models, config, and types, so using them together costs nothing extra.