Create your first Bengal site and publish content in 5 minutes. No theming or code required.
Prerequisites
Before You Start
- Basic Markdown knowledge
- Bengal installed
- Terminal access
Create Your Site
bengal new site myblog --template blog
cd myblog
The --template blog flag scaffolds a complete blog structure with sample posts. Other templates: default, docs, portfolio, product, resume.
Or use a custom skeleton YAML
Define your site structure in one YAML file:
name: My Blog
structure:
- path: index.md
type: blog
props:
title: My Blog
content: |
# Welcome to My Blog
- path: posts/hello-world.md
type: blog
props:
title: Hello World
date: "2026-01-15"
content: |
# Hello World
My first post!
Apply it:
bengal project skeleton apply my-blog.yaml
See Skeleton YAML Quickstart for more examples.
Start the Dev Server
bengal serve
Your browser opens automatically at http://localhost:5173/. The server rebuilds on save—CSS changes apply instantly without page refresh.
Create Your First Post
bengal new page my-first-post --section blog
This creates content/blog/my-first-post.md. Edit it:
---
title: My First Post
date: 2026-01-15
tags: [welcome]
description: Getting started with Bengal
---
# My First Post
Welcome to my blog! Bengal makes publishing simple.
## What's Next
- Add more posts with `bengal new page`
- Customize your theme
- Deploy to the web
Save. The page appears instantly in your browser.
Customize Your Site
Editconfig/_default/site.yaml:
site:
title: "My Awesome Blog"
description: "Thoughts on code, design, and life"
language: "en"
Other config files
Bengal splits configuration across focused files inconfig/_default/:
| File | Purpose |
|---|---|
build.yaml |
Parallel builds, output directory |
theme.yaml |
Theme selection and options |
features.yaml |
Search, RSS, sitemap toggles |
content.yaml |
Markdown processing options |
See Configuration Reference for details.
Build and Deploy
bengal build
Output goes to public/. Deploy to any static host:
| Platform | Build Command | Output |
|---|---|---|
| Netlify | bengal build |
public |
| Vercel | bengal build |
public |
| GitHub Pages | bengal build |
public |
Bengal auto-detects Netlify, Vercel, and GitHub Pages to setbaseurlautomatically. See Deployment Guide for CI/CD workflows.
Frontmatter Essentials
Every page starts with YAML frontmatter:
---
title: Page Title # Required
date: 2026-01-15 # Publication date (ISO format)
description: SEO text # Search/social preview
tags: [tag1, tag2] # Taxonomy
draft: true # Exclude from production
---
All frontmatter fields
| Field | Description |
|---|---|
title |
Page title (required) |
date |
Publication date (ISO format) |
description |
SEO/social preview text |
tags |
Taxonomy tags (e.g.,[python, web]) |
weight |
Sort order in section (lower = first) |
draft |
trueexcludes from production builds |
slug |
Custom URL (overrides filename) |
type |
Page type for template selection |
variant |
Visual presentation variant |
lang |
Language code (en, es, etc.) |
nav_title |
Short title for navigation |
aliases |
Redirect URLs to this page |
Custom fields are accessible in templates viapage.props.fieldname, page.params.fieldname, or page.metadata.fieldname(all equivalent).
Next Steps
- Content Authoring — Markdown features and syntax
- Content Organization — Structure your site
- Theming — Customize appearance
- Build a Blog — Complete tutorial