Full-stack TypeScript · One Cloudflare Worker

One runtime for your server, your site, and your service worker

Firebrand is a modular full-stack framework. Compose your platform from typed modules — auth, storage, payments, offline-first pages — and ship all of it as a single Worker. One repo. One deploy. No glue between a frontend, a backend and five vendors.

Registration & sign-in OAuth One-time passcodes Sessions & JWTs Account recovery Per-user storage KV caches R2 buckets D1 databases Queues Transactional email Web push Scheduled routines Traffic & audits Insights API Admin screens i18n Sitemaps & SEO Offline rendering Install prompts
The entire Cloudflare Worker
import { useFirebrand } from 'firebrand'
import { core } from 'firebrand/core/api'
import { stripe } from 'firebrand/modules/stripe/api'

export default {
  async fetch(request, env, context) {
    const firebrand = useFirebrand('api', [core, stripe], { env })
    return firebrand.helpers.useServer(firebrand).fetch(request, env, context)
  }
}
An endpoint
makeSignal('api', '/ping', {
  middleware: [],
  handler: async (firebrand) => {
    const { responses } = firebrand.helpers
    return responses.json({ ok: true })
  }
})
A page
makeView({
  name: 'PricingView',
  tag: 'pricing-view',
  pathname: '/pricing',
  template,
  style,
  logic,
  layouts: ['site-layout']
})
Ship it
$ firebrand dev --watch
→ Worker, KV, R2, queues, Durable Objects

$ firebrand deploy
→ live on Cloudflare's network

How it works

Write a module once. It runs in three places.

A module bundles its routes, pages, elements, jobs and helpers. Register it once and every runtime it targets picks up its part — there is no second project to keep in step.

Core

A whole platform, before you write a line

Core is not a starter template you grow out of. It is the base module every Firebrand app is composed on, and it arrives with the parts you would otherwise be buying, wiring and keeping current.

The alternative

What you would otherwise be assembling

Nothing here is impossible without Firebrand. It is the assembling, the invoices and the version drift that the modular monolith is a bet against.

A typical product platform, three ways

Quickstart

From an empty directory to a deployed Worker

Four commands. The CLI resolves the project root by walking up from wherever you run it, so each one works from anywhere in the tree.

    Why Cloudflare

    The economics come with the architecture

    Three things that follow from deploying one Worker instead of renting a platform to run several services.

    Straight answers

    Before you commit a project to it

    Follow the build

    Release notes, new modules and the occasional post-mortem from the person writing it. No more than monthly.

    One click to unsubscribe, and the list lives in this deployment rather than a mailing vendor.

    Ship the whole thing this week

    Start from a platform that already has auth, storage, notifications, tests and a deploy pipeline, and spend the week on the part only you can build.