v0.1 · Open Source · MIT

Build full-stack apps
with TypeScript

File-based routing, signal-driven UI, and a multi-runtime backend. What Framework for the frontend, CelsianJS for the backend, Vura to wire them together.

pages/index.tsx
import { signal } from 'what-framework'; const count = signal(0); export default function Home() { return ( <main> <h1>Hello, Vura</h1> <button onClick={() => count.set(count() + 1)}> Clicks: {count} </button> </main> ); } export const page = { mode: 'hybrid', title: 'My App', };
Ecosystem

Three frameworks. One stack.

Each layer works independently. Together, they cover frontend, backend, and deployment without gaps.

What Framework v0.8

Signal-based reactive UI. Components run once at mount, signals drive updates. Islands architecture for partial hydration. 12 KB runtime.

Documentation →

CelsianJS v0.3

TypeScript backend on Web Standard APIs. Runs on Node, Bun, Deno, Cloudflare Workers, Lambda, Vercel, Fly, and Railway.

Documentation →

Vura v0.1

The full-stack framework that connects them. File-based page and API routing, build pipeline, and deployment adapters.

Source →
Features

Built for the modern stack

Sensible defaults that get out of your way. Every feature earns its place.

📁

File-based routing

Pages and API routes live in the filesystem. Dynamic segments, nested layouts, and catch-all routes work out of the box.

⚙️

Four rendering modes

Static, server, hybrid, or client. Choose per page. Static pages ship zero JS. Hybrid pages hydrate only the interactive islands.

🏠

Islands architecture

Interactive components hydrate independently inside a static shell. Control when each island loads: on page load, on idle, or on visible.

Signal-driven reactivity

No virtual DOM. Components run once. Fine-grained signals update only the DOM nodes that changed. Fast by default.

🌐

Multi-runtime backend

CelsianJS uses Web Standard Request/Response. Write once, deploy to Node, Cloudflare Workers, AWS Lambda, or any adapter target.

🤖

AI-native development

What Framework includes MCP DevTools. AI agents can inspect every signal, effect, and component in a running app over WebSocket.

Quick Start

Up and running in minutes

Create a project, write a page, add an API route, and start developing.

1

Create a new project

Scaffold a Vura project with pages, API routes, and dev tooling preconfigured.

terminal
$ npx create-then my-app $ cd my-app $ npm install
2

Write a page

Each file in pages/ becomes a route. Export a component and a page config to control rendering mode, title, and meta tags.

pages/about.tsx
export default function About() { return ( <main> <h1>About</h1> <p>This page ships zero JavaScript.</p> </main> ); } export const page = { mode: 'static', title: 'About', meta: { description: 'About us' }, };
3

Add an API route

Files in api/ export handlers for each HTTP method. Uses standard Request / Response APIs.

api/hello.ts
export function GET() { return Response.json({ message: 'Hello from Vura', time: new Date().toISOString(), }); }
4

Start developing

The dev server compiles your pages, watches for changes, and serves everything locally with hot reloading.

terminal
$ npx vura dev Vura dev server running > Local: http://localhost:3000 > Pages: 2 routes compiled > API: 1 endpoint ready
Deploy

Ship to any runtime

Deploy to managed infrastructure or bring your own. Adapter-based architecture means your code stays portable.

Managed

Vura Platform

Push-to-deploy hosting built for Vura apps. Preview deployments on every branch, production on merge. Currently in private beta.

$ npx vura deploy
Self-Hosted

Bring your own infra

Build once, deploy anywhere. Swap the adapter to target the runtime you already use.

  • Node.js
  • Cloudflare Workers
  • AWS Lambda
  • Bun
  • Deno