Skip to main content

Bob the static site builder

Bob is a static site generator built on top of the Deno runtime.

Features

Bob is designed for creating extremely performant websites that require near-instant content updating and network edge personalization. All with best-in-class developer experience.

🚀 Extremely performant websites

  • Minimal CSS footprint (coming soon) Include only the CSS needed for each page to keep CSS size as small as possible.

⚡ Near-instant content updating

  • Incremental builds Build only what is needed in order to be extremely fast.
  • Incremental deploy (coming soon) Deploy only changed content.

🌐 Network-edge personalization

  • Personalize pages on the edge, without client-side Javascript (coming soon) Create complex rules and change the page based on request parameters, such as visitor country or cookie values. Use this to create A/B tests, GDPR banners, or product recommendations. This requires the Cloudflare hosting plugin.

🤓 Best-in-class developer experience

  • Fully typed using TypeScript Intellisense and type checking in layout templates.
  • Highly modular Everything is a module internally, increasing customizability and maintainability.
  • Structure your layouts any way you like The only thing that is needed is a function that takes a content page and renders it into HTML. The rest is up to you. Use template literals, JSX (example coming soon), or any other way to make this happen.
  • Easily create client-side components (coming soon) Create client-side code right in your layout files.

Installation

You need to have the Deno runtime installed. When you have it installed, just run:

deno install -A [PATH TO CMD.TS]

Usage

See the demo directory for an example implementation.

Layout files

Structure your layout files as you wish, and export a renderer function from a file named site.ts. This function will be called with a ContentFile for each content page that should be rendered.

Content files

Add Markdown content files to the content directory as needed. Each content file will be rendered into an HTML file using the corresponding path into the public directory.