---
title: Static Site Generators
url: "/docs/build/static/"
canonical_url: https://docs.blossom88.com/docs/build/static/
markdown_url: https://docs.blossom88.com/docs/build/static.md
summary: Deploy a static site from any popular generator, built for you and served
  from Blossom's CDN
categories:
- build
- static-sites
---

# Static Site Generators

Choose the **Static Site** build type, and Blossom detects your site
generator, builds the site and serves it worldwide from Blossom's CDN. No
Dockerfile, no Containers to size. Set a subfolder when the site isn't at the
root of the repository.

| Language | Generators |
|---|---|
| JavaScript | Astro, Eleventy, Gatsby, Gridsome, Next.js (static export), Nuxt, Parcel, SvelteKit, Vite |
| Ruby | Bridgetown, Jekyll |
| Go | Hugo |
| Python | MkDocs, Pelican |
| Node.js | Hexo |
| None | Plain HTML, served as is |

When a `package.json` is present, Blossom installs your dependencies and runs
its `build` script too, so asset pipelines like esbuild work alongside Jekyll
or Hugo.

A single-page app works as is: every page path gets its `index.html`, so your
app's router draws it. Other sites answer a missing page with their own
`404.html`, or a plain 404.

## Your Domain

Ask your AI agent:

> Serve my site at www.example.com.

It adds the domain:

    blossom domain:create -d '{"domain":{"environment_id":"environment-100","dns_name":"www.example.com"}}'
    blossom domain:show --id site_domain-100

Open **Domains** in the Environment sidebar, or use the CLI above. Then add
the CNAME with your DNS provider:

| Name | Type | Value |
|---|---|---|
| `www` | CNAME | `sites.onblsm.page` |

With Cloudflare DNS, use **DNS only** for this record.
HTTPS follows automatically after DNS and certificate validation. For
`example.com` itself, use your provider's ALIAS or CNAME flattening.

## Private Sites

Ask your AI agent:

> Make my staging site visible only to my team.

It sets the Environment's [Access](/docs/apps/environment-access/):

    blossom environment:update --id environment-100 -d '{"environment":{"access_mode":"members"}}'

Visitors sign in to Blossom first; `password` asks for a shared username and
password instead. Previews of a site are members-only by default.

## Markdown for AI Agents

Ship a `.md` copy beside each page, such as `guide.md` for `/guide/`, and AI
agents that ask for Markdown get it from the page's own URL. Browsers still get
HTML.

    curl -H "Accept: text/markdown" https://www.example.com/guide/

## What You Get

- Your built site on its own HTTPS URL, and your own domain when you add one
- Fast pages: hashed assets cached for a year, HTML always fresh, and text
  compressed
- The same Access as any Environment: public, a password, or Account members
  only, so Previews stay private
- Dotfiles such as `.git` and `.env` never served
- Markdown for AI agents, from the same URLs, when you ship `.md` copies

See the [Static Site Quickstarts](/docs/quickstarts/) for a working
example of each.
