The simplest web framework and site generator yet – no bloat, no bundler, no client-side JS by default.
See the codeNo dependencies. No build step. Just a simple web framework.
Mastro is a web framework and site generator for people who care about their users and web standards. It’s is implemented in just ~800 lines of TypeScript.
Use JavaScript/TypeScript’s mature tooling to build fast MPA websites. Instead of going through layers of abstraction, work directly with the browser and your JavaScript runtime – Node.js, Deno, Bun, or Workers.
<img> and <a> tags referencing asset routes.The core of Mastro is tiny. But to get you started quickly for common use-cases, there is a growing list of extensions that are tailored to be used with Mastro. Often, it's just a single file wrapping a carefully chosen external dependency.
@mastrojs namespace:
Result typeWe’re building an inclusive community, where people of all kinds of backgrounds and experience levels feel welcome and safe, and help each other. A place to ask questions and learn new things.
Please start a GitHub Discussion or join us on our Discord or our Stoat.
Something not working as expected or confusing? We consider that a bug. Please open a GitHub issue.
349 commits
TypeScript
88.7%
JavaScript
11.3%
The simplest web framework and site generator yet – no bloat, no bundler, no client-side JS by default.
See the codeNo dependencies. No build step. Just a simple web framework.
Mastro is a web framework and site generator for people who care about their users and web standards. It’s is implemented in just ~800 lines of TypeScript.
Use JavaScript/TypeScript’s mature tooling to build fast MPA websites. Instead of going through layers of abstraction, work directly with the browser and your JavaScript runtime – Node.js, Deno, Bun, or Workers.
<img> and <a> tags referencing asset routes.The core of Mastro is tiny. But to get you started quickly for common use-cases, there is a growing list of extensions that are tailored to be used with Mastro. Often, it's just a single file wrapping a carefully chosen external dependency.
@mastrojs namespace:
Result typeWe’re building an inclusive community, where people of all kinds of backgrounds and experience levels feel welcome and safe, and help each other. A place to ask questions and learn new things.
Please start a GitHub Discussion or join us on our Discord or our Stoat.
Something not working as expected or confusing? We consider that a bug. Please open a GitHub issue.
349 commits
TypeScript
88.7%
JavaScript
11.3%