Bengal provides built-in templates to quickly create sites with common information architectures. This tutorial covers three ways to scaffold a site.
Quick Start: Template-Based Creation
The fastest way to start is with a template:
# Create a documentation site
bengal new site my-docs --template docs
# Navigate and preview
cd my-docs
bengal serve
Openhttp://localhost:5173to see your scaffolded site.
Available Templates
| Template | Best For | Command |
|---|---|---|
default |
Minimal single-page site | bengal new site --template default |
docs |
Technical documentation, knowledge bases | bengal new site --template docs |
blog |
Personal blogs, news sites | bengal new site --template blog |
portfolio |
Developer portfolios, project showcases | bengal new site --template portfolio |
product |
Product showcase sites | bengal new site --template product |
resume |
CV/Resume with structured data | bengal new site --template resume |
landing |
Marketing landing pages | bengal new site --template landing |
changelog |
Version history, release notes | bengal new site --template changelog |
What Gets Created
When you runbengal new site my-docs --template docs, Bengal creates:
my-docs/
├── config/
│ ├── _default/
│ │ ├── site.yaml # Site identity (title, author, baseurl)
│ │ ├── content.yaml # Content processing settings
│ │ ├── build.yaml # Build configuration
│ │ ├── features.yaml # Feature toggles
│ │ ├── theme.yaml # Theme configuration
│ │ └── params.yaml # Custom variables
│ └── environments/
│ ├── local.yaml # Development overrides
│ └── production.yaml # Production settings
├── content/
│ ├── index.md # Home page
│ ├── getting-started/ # Onboarding section
│ │ ├── _index.md
│ │ ├── installation.md
│ │ └── quickstart.md
│ ├── guides/ # How-to guides
│ │ └── _index.md
│ └── api/ # API reference
│ └── _index.md
└── .gitignore
Method 1: Interactive Wizard
For a guided experience, run without arguments:
bengal new site
The wizard prompts for:
- Site name (creates directory)
- Base URL (for production deployment)
- Template (select from list)
Method 2: Direct Template Selection
Skip prompts with explicit options:
# Blog with custom name
bengal new site my-blog --template blog
# Portfolio at specific URL
bengal new site portfolio --template portfolio
Method 3: Add Sections to Existing Site
Already have a site? Add sections without recreating:
# Add docs and tutorials sections
bengal project init --sections docs --sections tutorials
# Add sections with sample content
bengal project init --sections blog --with-content --pages-per-section 5
Section Type Inference
Bengal infers section types from names:
| Name Pattern | Inferred Type | Behavior |
|---|---|---|
| blog, posts, articles, news | blog |
Date-sorted, post-style |
| docs, documentation, guides, tutorials | doc |
Weight-sorted, doc-style |
| projects, portfolio | section |
Standard section |
| about, contact | section |
Standard section |
Customizing After Scaffolding
- 1
Update Site Identity
Replace placeholder values with your project's actual metadata.
Edit
config/_default/site.yaml:site: title: "My Documentation" description: "Documentation for my project" author: "Your Name" baseurl: "https://docs.example.com" - 2
Configure Features
Enable RSS feeds, search, sitemaps, and other built-in features.
Edit
config/_default/features.yaml:features: rss: true # Generate RSS feed sitemap: true # Generate sitemap.xml search: true # Enable search json: true # Generate JSON API llm_txt: true # Generate llms.txt - 3
Add Your Content
Replace placeholder content in
content/:# Edit home page $EDITOR content/index.md # Add new page touch content/getting-started/configuration.md
Preview and Build
# Live preview with hot reload
bengal serve
# Production build
bengal build
# Build with specific environment
bengal build --environment production
Coming Soon: Skeleton Manifests
Bengal will soon support skeleton manifests - shareable YAML files that define complete site structures with frontmatter, cascades, and content stubs.
# Apply a community skeleton
bengal project skeleton apply @bengal/api-docs-starter
# Export your site's structure for others
bengal project skeleton export --output my-pattern.yaml
# Browse available skeletons
bengal project skeleton list --category documentation
Skeletons will enable:
- Community patterns - Browse and use proven site structures
- Org standards - Enforce consistent IA across projects
- Theme compatibility - Find skeletons optimized for your theme
See RFC: Skeleton Manifests for the full proposal.
Next Steps
- Configuration Reference - Detailed config options
- Content Organization - Structuring your content
- Theming Guide - Customize appearance
Troubleshooting
"Directory already exists"
# Remove existing directory
rm -rf my-docs
# Or use a different name
bengal new site my-docs-v2 --template docs
"Section already exists"
Use--forceto overwrite:
bengal project init --sections blog --force
Preview Without Creating
Use--dry-runto see what would be created:
bengal project init --sections api --sections guides --dry-run