This is a basic TypeScript template for Mastro when using Cloudflare Workers to run your server code on-demand on the edge. If you only need to generate a static site for the Cloudflare CDN, you don't need this template.
Click the green Use this template button in the top right to create your own copy of this repository. Then clone the Code to your computer.
If you have multiple projects on your computer that require different Node.js versions, you should install a tool to manage those version for you; for example Volta (see pnpm Support).
Mastro requires Node.js >=24.
JSR recommends to use pnpm.
The first time, you need to:
pnpm install
After that, to start the Cloudflare Workers runtime using Wrangler:
pnpm run dev
Then open http://localhost:8787 in your browser.
To start a development server that reloads more quickly than wrangler (which bundles all your code using esbuild, and then runs it in the workerd JavaScript runtime), you can use Deno:
deno task start
Then open http://localhost:8000 in your browser.
However, be aware that the Deno and workerd JavaScript runtimes don't support exactly the same features. Thus to get the exact same behaviour as on production, you should use pnpm run dev.
Note that currently, Mastro on Cloudflare Workers only works with the programmatic router, not the file-based router which is the default when using Mastro with Deno, Bun or plain Node.js.
To see how Mastro works, follow the guide.
To make sure you're on the latest Mastro version:
pnpm update @mastrojs/mastro --latest
pnpm run deploy