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:
- Detects the type of static site generator being used
- 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
- Builds and deploys the container
Output
All static sites are served using nginx, which provides:
- Efficient static file serving
- Proper mime-type handling
- Basic caching headers
- SPA fallback support where needed
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
- SPA routing is supported through nginx configuration