⚠️
Beta

ReeWeb is ready for real projects and already powers reepolee.com. APIs, templates, and project structure may still change before 1.0, so review the release notes when updating.

Zero Dependencies "dependencies": {}

Zero ceremony.
Ship content sites fast.

ReeWeb is a template for Bun-powered static sites with zero runtime dependencies. Powered by the Ree templating language and Tailwind CSS, it handles the entire SSG pipeline so you can focus on content.

ReeWeb is free and standalone - see the product overview. When you need a CMS, add the Reepolee Framework in parallel: it becomes the server for ReeWeb, connected through fetch_collection(). The growth guide shows the path in detail.

Bun

Bun-Powered

Fast static generation and live reload in development - no webpack, no vite, just Bun.

.ree

ReeTags

Expressive .ree templating with layouts, partials, loops, and components alongside Markdown.

i18n

Multi-Language

First-class internationalisation with per-language routing and fallback translation chains.


Before you begin

ReeWeb starts from its public GitHub starter. Install Bun, then bun create reepolee/reeweb fetches the starter and the install task runs automatically.

Bun

Bun

Install from bun.com - the runtime and package manager that powers ReeWeb.


Get Started

Create a project from the public ReeWeb starter with bun create, then follow the one installation path. It covers setup, the development server, and the production build.

The installation guide is the source of truth for starting a project. It uses bun create reepolee/reeweb to fetch the starter - the install runs automatically - then bun dev for local development.

No runtime dependencies

Really, "dependencies": {}. ReeWeb's only dev dependencies are Tailwind CSS, tailwind-merge, TypeScript, and the Bun and Cloudflare Workers type definitions - none of which ship to the browser. Nothing to bump and no runtime supply chain to track; the project you initialize is yours to keep.


SSG Pipeline

Write content as .ree or .md files in src/public/. The SSG pipeline compiles them into a static dist/ folder ready to deploy anywhere.

1

Write a page

Drop a .ree or .md file in src/public/. The path determines the URL - src/public/about/index.ree becomes /about/.

2

Attach data via a sibling .ts file

Export a load_template_data function alongside the template to pass data into props during static site generation:

export async function load_template_data() { return { posts } }
3

Generate, preview, and deploy

bun ssg outputs to dist/, including the sitemap, RSS and JSON feeds, search index, and Open Graph cards. Preview the output locally before deploying:

bun ssg             # full geneation: src/public/ -> dist/, plus sitemap, feeds, OG cards
bun preview         # serve dist/ locally to verify before deploy
bun sitemap         # re-run one stage: dist/sitemap.xml + dist/robots.txt
bun rss             # re-run one stage: dist/blog/feed.xml + dist/blog/feed.json

Add a frontmatter block to any .md file to control layout, metadata, and sitemap behavior:

---
layout: engineering-notes/layout
title: My Post
published_at: 2025-06-01
author: Jane Doe
---

Explore the ecosystem

Reepolee is a small family of tools that work together. Explore the others - each has its own documentation.

AI-supported content: We are not native English speakers, so some content is translated mechanically.