Tabirun

A web framework and static site generator for Deno. Build APIs with Tabirun App. Build documentation sites with Tabirun Pages.

Tabirun App

Web framework for building APIs and web applications. Middleware system, routing, request validation, and security utilities.

  • -File-based or programmatic routing
  • -Type-safe request validation with Standard Schema
  • -Security middleware (CORS, CSRF, CSP, rate limiting)
  • -Built for Deno Deploy
View Docs

Tabirun Pages

Static site generator for documentation and content sites. Markdown with frontmatter, Preact components, and file-based routing.

  • -Markdown with YAML frontmatter
  • -Shiki syntax highlighting
  • -Preact components with hydration
  • -Opt-in PostCSS support
View Docs

Quick Look

Tabirun App

import { TabiApp } from "@tabirun/app";
import { validator } from "@tabirun/app/validate";
import { z } from "zod";

const app = new TabiApp();

const schema = z.object({
  name: z.string().min(1),
});

const { validate, valid } = validator({
  json: schema,
});

app.post("/hello", validate, (c) => {
  const { json } = valid(c);
  return c.json({ message: `Hello, ${json.name}!` });
});

Deno.serve(app.handler);

Tabirun Pages

import { TabiApp } from "@tabirun/app";
import { pages } from "@tabirun/pages";

const app = new TabiApp();

const { dev, build, serve } = pages({
  shikiTheme: "github-dark",
  markdown: {
    wrapperClassName: "prose",
  },
});

// Development with hot reload
await dev(app);

Deno.serve(app.handler);

Install

{
  "imports": {
    "@tabirun/app": "jsr:@tabirun/app",
    "@tabirun/pages": "jsr:@tabirun/pages"
  }
}

Add to your deno.json imports