Blossom Logo Blossom

Static Site Generators

3 min read

Blossom supports building and deploying static sites from various static site generators (SSGs). It automatically detects the type of static site generator being used and creates an appropriate build configuration.

Supported Static Site Generators

JavaScript/Node.js Based

  • Astro - Modern static site builder with component islands
  • Eleventy (11ty) - Simpler static site generator
  • Gatsby - React-based static site generator
  • Gridsome - Vue-based static site generator
  • Next.js - React framework with static export
  • Nuxt.js - Vue framework with static generation
  • Parcel - Zero-configuration web application bundler
  • Svelte - Svelte/SvelteKit static site generation
  • Vite - Modern frontend build tool

Ruby Based

  • Bridgetown - Progressive site generator built on Ruby
  • Jekyll - Classic static site generator

Go Based

  • Hugo - Fast static site generator written in Go

Python Based

  • MkDocs - Project documentation with Markdown
  • Pelican - Static site generator written in Python

Other

  • Hexo - Blog framework powered by Node.js

Build Process

For each static site generator, Blossom:

  1. Detects the type of static site generator being used
  2. Creates a multi-stage Dockerfile that:
    • Uses appropriate base images for building
    • Installs necessary dependencies
    • Runs the build process
    • Creates a minimal nginx-based image with the built static files
  3. Builds and deploys the container

Javascript Build

Blossom automatically detects and handles JavaScript-based asset building alongside static site generators. When a package.json or yarn.lock file is present in your project, Blossom will:

  • Install Node.js and npm/yarn in the build container
  • Install project dependencies
  • Run the build script if defined in package.json
  • Copy the built assets to the final nginx container

This allows you to use modern JavaScript tooling (like webpack, esbuild, or other build tools) to process your assets, even when using non-JavaScript-based static site generators like Jekyll or Hugo.

Nginx Server Output

All static sites are served using nginx, which provides:

  • Efficient static file serving
  • Proper mime-type handling
  • Smart caching headers

Caching Headers

Blossom’s nginx configuration implements intelligent caching strategies based on the type of content being served:

  • HTML files: No caching by default to ensure users always get the latest content
  • Hashed static assets (e.g., main.abc123.css): Long-term caching (1 year) with immutable flag, safe due to content-based hashing
  • Non-hashed static assets: Short-term caching (1 hour) with revalidation to balance performance and freshness

The configuration also includes optimized gzip compression for text-based assets, further improving performance.

Example

A typical static site project might look like:

my-static-site/
├── package.json        # For Node.js based SSGs
├── Gemfile            # For Ruby based SSGs
├── requirements.txt   # For Python based SSGs
├── content/          # Your content files
└── config files      # SSG-specific configuration

Blossom will automatically detect the SSG type and handle the build process appropriately.

Notes

  • Each SSG has its own build output directory which is automatically mapped in the final nginx container
  • The build process uses full-featured base images for better compatibility
  • The final nginx image is minimal for efficient deployment