Builder is a streamlined static site generation tool designed with a focus on convention over configuration. Say goodbye to maintaining endless YAML files and embrace a more straightforward approach to building your website.
- No Configuration Files: Avoid the hassle of managing configuration files.
- Simple Directory Layout: Organize your content easily with a straightforward directory structure.
- Asset Management: Easily manage images, JavaScript, CSS, and other assets.
- Enhanced Markdown Rendering: Builder provides a rich markdown rendering
experience:
Feeds: Outputs RSS, Atom, and Sitemap feeds based on the content.
<linkrel="alternate" type="application/rss+xml" href="https://example.com/rss.xml" /><linkrel="alternate" type="application/atom+xml" href="https://example.com/atom.xml" />
GitHub Flavored Markdown: Write markdown the GitHub way.
```javascriptfunctionhello() { console.log("Hello, GitHub!"); } ```
Emoji Support: Add a touch of fun with emoji support in your content.
I love coding! :heart:Mermaid Diagrams: Visualize your ideas with Mermaid diagrams.
```mermaidgraph TD; A-->B; A-->C; B-->D; C-->D;```
Syntax Highlighting: Make your code snippets stand out.
```pythondefgreet(): print("Hello, World!") ```
Definition Lists, Footnotes, and Typographer: Add rich details to your content.
Term 1 : Definition 1 Term 2 : Definition 2[^1][^1]: This is a footnote.
- Templating Power: Harness the power of Go's
html/templatepackage:Sprig Functions: Use of sprig
Embed Dynamic Content:
{{.VariableName}}Loop Through Lists:
{{range .List}} - {{.}} {{end}}
- SEO-Friendly URLs: Builder generates SEO-friendly URLs by creating slugs
from your markdown file titles. For a markdown file titled "My Awesome Post",
Builder might generate a URL like
/my-awesome-post. - Optimized Output: With built-in HTML minification, your site will be optimized for faster load times. No additional configuration is needed; Builder handles this automatically.
- Comprehensive Error Handling: Builder ensures you're always in the know. If there's an issue during the build process, Builder will provide a detailed error message to help you troubleshoot.
Download Builder:
Using Homebrew:
brew tap jtarchie/builder https://github.com/jtarchie/builder brew install builder
Install Mermaid CLI (for server-side mermaid rendering):
npm install -g @mermaid-js/mermaid-cli
Directory Structure:
layout.html: This is the main template used to render the content of your site.public/: Place all your assets here (images, JavaScript, CSS, etc.). These will be copied to the output directory during the build process.**/*.md: Write your content in markdown files. Organize them in any directory structure you prefer. They will be rendered and placed in the corresponding location in the output directory.
Building Your Site:
builder --source-path <source-directory> --build-path <output-directory>
To get a clearer idea, check out the example/ directory:
example: The root directory for the sample project.example/markdown.md: A sample markdown file showcasing content creation.example/posts: A directory for organizing blog posts or articles.example/posts/2023-01-01.md: A sample blog post dated January 1, 2023.example/layout.html: The main template file defining the site's structure and appearance.example/public: A directory for static assets like images, stylesheets, and scripts.example/public/404.html: A custom 404 error page for handling missing pages.
To run the example:
go run cmd/main.go --source-path ./example --build-path build/ --serve- https://jtarchie.com with source. It uses a custom Github Action to deploy this to Cloudflare Pages.