Tachyon is a polyglot, file-system-routed full-stack framework for Bun. Write backend handlers as plain exported functions in JavaScript, TypeScript, Python, Ruby, Go, Rust, and more. Build reactive front-end pages with Tac — companion classes, decorators, scoped CSS, prerendered static output, and first-party preview tooling.
Use yon.init for a scaffolded app, then iterate with bun run preview or bun run serve.
Tachyon handles routing, scaffolding, bundling, preview, and deployment-ready output — so you can focus on writing handlers and pages.
Routes are directories. HTTP methods are files. No router config or decorators, just drop a file in the right place.
Export a handler function in TypeScript, Python, Ruby, Go, Rust, Java, or any language — the framework invokes it directly.
HTML templates with {expr} bindings, @event handlers, loops, conditionals, and lazy components. No virtual DOM.
yon.init creates a production-ready starter with routes, components, package scripts, and Amplify config.
Any package in dependencies is auto-bundled and available at /modules/<name>.js in front-end code.
Filesystem-first document store with prefix indexes, event journals, WORM history, and optional AES-GCM encryption — no external database needed.
tac.bundle writes real route HTML like dist/index.html and dist/docs/index.html, not just an SPA shell.
tac.preview --watch bundles front-end changes and serves nested routes locally so static hosting behavior is easy to verify.
CSP, X-Frame-Options, and X-Content-Type-Options ship on every response. Basic Auth, JWT decoding, and optional HSTS are built in.
Drop an OPTIONS.json file in any route directory to validate request and response shapes with CHEX regex schemas.
Add lazy to any component to defer loading until it scrolls into view via IntersectionObserver.
Use tac.bundle --watch for front-end iteration, or yon.serve when you want the app server and static preview together.
Every handler is a function that receives a request object and returns plain data. JavaScript and TypeScript run directly; Python, Ruby, Go, Rust, and others are invoked through their native runtimes — no adapter layer needed.
Tac is Tachyon's built-in template engine. Write reactive front-end pages with plain HTML, then prerender them into deployable documents with tac.bundle. Non-native tags auto-resolve from components/, including nested folders.
| {expr} | Interpolate expression |
| @event="fn()" | Event binding |
| :prop="value" | Bind attribute to expression |
| :value="var" | Two-way input binding |
| <loop :for="..."> | Loop block |
| <logic :if="..."> | Conditional block |
| <my-comp /> | Custom component from components/my-comp.html |
| <ui-chart /> | Nested component from components/ui/chart.html |
| <ui-chart lazy /> | Lazy-loaded nested component |
| tac.preview --watch | Serve bundled pages and rebundle frontend changes automatically |
| yon.serve | Run the app server and the static preview workflow together |
Ship API routes in any language, scaffold new apps fast, and deploy prerendered Bun sites from a single framework.