Full-stack TypeScript · One Cloudflare 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.
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)
}
}
makeSignal('api', '/ping', {
middleware: [],
handler: async (firebrand) => {
const { responses } = firebrand.helpers
return responses.json({ ok: true })
}
})
makeView({
name: 'PricingView',
tag: 'pricing-view',
pathname: '/pricing',
template,
style,
logic,
layouts: ['site-layout']
})
$ firebrand dev --watch
→ Worker, KV, R2, queues, Durable Objects
$ firebrand deploy
→ live on Cloudflare's network
How it works
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
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
Nothing here is impossible without Firebrand. It is the assembling, the invoices and the version drift that the modular monolith is a bet against.
Quickstart
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.
Three things that follow from deploying one Worker instead of renting a platform to run several services.
Pages render in the region the visitor is in, with cache-first delivery behind them. Web vitals and crawlability come out of where the code runs, not out of a checklist.
Serverless infrastructure absorbs a spike on demand. There are no instances to size, no clusters to keep warm and nothing to page you at 3am about capacity.
You run your own platform on metered infrastructure instead of renting per-seat, per-feature services around it — and the data stays in your account.
Straight answers
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.
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.