v1.2.0
NewWhat’s new in v1.2.0 →

Static sites
with a good beat.

bongo turns Markdown, templates, and assets into fast static HTML. Rolldown bundles your scripts. LightningCSS bundles your styles.

Get started
$ bun create bongo my-site
Config loads the same inBunDenoNode 24+
Rolldown LightningCSS
content/hello.mdmd
---
title: Hello, world
date: 2024-05-01
tags: [js, css]
---

# Hello, world

![A hero](hero.jpg)

<bongo:card title="Hello" count=3 featured />
Writespublic/hello/index.html
How it works

Plain files in. A static site out.

Each folder has one job. bongo reads them in order and writes plain HTML, CSS, and JS to public/.

my-site/tree
assets/          scripts, styles, fonts
content/         pages: .md, .hbs, .html
data/            JSON, YAML, modules → $data
layouts/         html.hbs wraps each page
partials/        reusable template pieces
public/          the build output
bongo.config.ts  site, helpers, plugins
  1. 1

    Load

    bongo loads bongo.config.ts and every file in data/.

  2. 2

    Render

    Loaders turn content into HTML. Layouts and partials wrap each page.

  3. 3

    Bundle

    Rolldown builds scripts. LightningCSS builds styles. Bun.Image resizes images.

  4. 4

    Write

    Pages go to public/, with content hashes in every asset URL.

Config

One typed config.

Set your site, helpers, and plugins in bongo.config.ts. Templates read them as $site and $utils.

  • Loads the same in Bun, Deno, and Node 24+.
  • Change it while bongo dev runs, and every page rebuilds. No restart.
  • A failed build shows an error overlay. The last good build keeps serving.
import { markdown } from '@bongo/markdown';
import { shiki } from '@bongo/markdown/highlight';
import type { Config } from 'bongo';

export default {
	$site: {
		title: 'My Site',
		url: 'https://example.com/',
		lang: 'en',
	},
	plugins: [
		markdown({
			highlighter: shiki({ theme: 'github-dark' }),
		}),
	],
} satisfies Config;

Start a site in one command.

$ bun create bongo my-site
Read the docs

    Type to search page titles and sections.