# Writer Quickstart URL: /bengal/docs/0.5.0/get-started/quickstart-writer/ Section: get-started Tags: onboarding, writing, quickstart -------------------------------------------------------------------------------- Writer Quickstart Create your first Bengal site and publish content in 5 minutes. No theming or code required. Prerequisites Before You Start 1/3 complete Basic Markdown knowledge Bengal installed Terminal access (function() { const checklist = document.currentScript.closest('.checklist'); if (!checklist) return; const progressBar = checklist.querySelector('.checklist-progress-bar'); const progressText = checklist.querySelector('.checklist-progress-text'); const checkboxes = checklist.querySelectorAll('input[type="checkbox"]'); if (!progressBar || !progressText || !checkboxes.length) return; function updateProgress() { const total = checkboxes.length; const checked = Array.from(checkboxes).filter(cb => cb.checked).length; const percentage = Math.round((checked / total) * 100); progressBar.style.width = percentage + '%'; progressText.textContent = checked + '/' + total; } checkboxes.forEach(function(checkbox) { checkbox.addEventListener('change', updateProgress); }); })(); 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. File Text Or use a custom skeleton YAML Define your site structure in one skeleton.yaml, drop it into a template directory, and scaffold from it: 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! Scaffold a site from it (the manifest lives as bengal/scaffolds/my-blog/skeleton.yaml, or register a custom template with bengal.scaffolds.register_template): bengal new site myblog --template my-blog 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 posts This creates content/posts/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 Edit config/_default/site.yaml: site: title: "My Awesome Blog" description: "Thoughts on code, design, and life" language: "en" Settings Other config files Bengal splits configuration across focused files in config/_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 set baseurl automatically. 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 --- List 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 true excludes 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 via page.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 -------------------------------------------------------------------------------- Metadata: - Author: lbliii - Word Count: 569 - Reading Time: 3 minutes