# Site Templates Reference URL: /bengal/docs/0.4.3/reference/site-templates/ Section: reference Tags: reference, templates, scaffolding, cli -------------------------------------------------------------------------------- Site Templates Reference Bengal provides a template system for scaffolding new sites with predefined structures. This reference covers all CLI commands and template options. CLI Commands Overview Command Purpose When to Use bengal new site Create new site from template Starting a new project bengal config init Initialize config directory Converting single-file to directory config bengal new site Create a new Bengal site from a template. Syntax bengal new site [NAME] [OPTIONS] Arguments Argument Required Description NAME No Site directory name (prompted if omitted) Options Option Default Description --template default Site template (see templates below) --theme default Theme to use --no-init false Skip structure initialization wizard --init-preset - Preset name for non-interactive mode Examples # Interactive mode (prompts for all options) bengal new site # Create docs site with explicit name bengal new site my-docs --template docs # Non-interactive with preset bengal new site my-blog --template blog --no-init What Gets Created All templates create: config/ directory with environment-aware configuration content/ directory with template-specific pages .gitignore for Bengal-specific files Adding sections to an existing site Bengal has no command for retrofitting sections into an existing site — content is just files on disk. Add a section by creating its directory and an _index.md: mkdir -p content/docs $EDITOR content/docs/_index.md Bengal infers a section's content type from its directory name: Name Pattern Type Description blog, posts, articles, news blog Date-sorted content docs, documentation, guides, reference, tutorials doc Weight-sorted content All others section Standard section Override the inferred type with type: (or cascade.type:) in the section's _index.md frontmatter. bengal config init Initialize configuration directory structure in an existing project. Syntax bengal config init [SOURCE] [OPTIONS] Arguments Argument Default Description SOURCE . Directory to initialize Options Option Default Description --type directory Config structure (directory or file) --template docs Config preset (docs, blog, minimal) --force false Overwrite existing config files Examples # Create config directory in current project bengal config init # Use blog preset bengal config init --template blog # Single file instead of directory bengal config init --type file Directory Structure Created config/ ├── _default/ │ ├── site.yaml # Site identity │ ├── build.yaml # Build settings │ └── features.yaml # Feature toggles ├── environments/ │ ├── local.yaml # Dev overrides │ └── production.yaml └── profiles/ ├── writer.yaml # Writer workflow └── dev.yaml # Developer workflow Built-in Templates default Minimal starter with single index page. Structure: content/ └── index.md Best for: Minimal sites, custom builds from scratch. docs Full documentation site with common sections. Structure: content/ ├── index.md ├── getting-started/ │ ├── _index.md │ ├── installation.md │ └── quickstart.md ├── guides/ │ └── _index.md └── api/ └── _index.md Config preset: Enables search, TOC depth 3, doc-style sorting. Best for: Technical documentation, knowledge bases, API docs. blog Blog with posts section and about page. Structure: content/ ├── index.md ├── about.md └── posts/ ├── first-post.md └── second-post.md Config preset: Enables RSS, date-sorted posts, excerpt generation. Best for: Personal blogs, news sites, journals. portfolio Project showcase with contact page. Structure: content/ ├── index.md ├── about.md ├── contact.md └── projects/ ├── index.md ├── project-1.md └── project-2.md Best for: Developer portfolios, agency sites, project showcases. resume CV/Resume with structured data. Structure: content/ └── _index.md data/ └── resume.yaml # Structured resume data Best for: Personal CVs, professional profiles. landing Marketing landing page with legal pages. Structure: content/ ├── index.md ├── privacy.md └── terms.md Best for: Product landing pages, marketing sites. changelog Version history with structured data. Structure: content/ └── _index.md data/ └── changelog.yaml Best for: Release notes, version history. product Product showcase with catalog and pricing. Structure: content/ ├── _index.md ├── contact.md ├── features.md ├── pricing.md └── products/ ├── _index.md ├── product-1.md └── product-2.md data/ └── products.yaml Config preset: Enables product catalog, structured data for products. Best for: Product websites, e-commerce showcases, SaaS landing pages. Template Architecture How Templates Work Templates are defined in bengal/scaffolds/<name>/: bengal/scaffolds/docs/ ├── __init__.py ├── template.py # TEMPLATE = SiteTemplate(...) └── pages/ ├── index.md └── getting-started/ └── _index.md SiteTemplate Class @dataclass class SiteTemplate: id: str # Template identifier name: str # Display name description: str # One-line summary files: list[TemplateFile] # Files to create additional_dirs: list[str] # Extra directories menu_sections: list[str] # Menu seed sections TemplateFile Class @dataclass class TemplateFile: relative_path: str # Path under target_dir content: str # File contents target_dir: str # "content", "data", "templates" Config Directory Structure All templates create this config structure: # config/_default/site.yaml site: title: "My Site" description: "Built with Bengal" language: "en" # config/_default/build.yaml build: parallel: true incremental: true minify_html: true # config/_default/features.yaml features: rss: true sitemap: true search: true json: true llm_txt: true Environment-Specific Config # config/environments/local.yaml build: debug: true strict_mode: false # config/environments/production.yaml site: baseurl: "https://example.com" build: strict_mode: true Related Documentation Configuration - How config works Configuration System - Architecture details Scaffold Tutorial - Step-by-step guide -------------------------------------------------------------------------------- Metadata: - Author: lbliii - Word Count: 788 - Reading Time: 4 minutes