Zero to total.
The full-stack framework for Bun.
Full-stack productivity with native Bun performance. Everything you need to build robust web applications in one cohesive package. No glue code required.
What's in the box
Everything you need to ship faster
Focus on building your product, not stitching together libraries. Zerotal gives you a cohesive ecosystem out of the box.
Bun-native
Built directly on Bun — native SQL client, native file system, native HTTP server. No wasted layers between your code and the metal.
Ergonomic DX
Active Record ORM, fluent middleware, file-based routing, and Flow reactive components — everything designed to feel natural from day one.
Batteries included
Auth, roles, 2FA, social login, queues, cache, storage, mail, audit logging, multi-tenancy — all in one coherent package with no glue code.
Beautiful, expressive code
Zerotal provides elegant APIs that make writing business logic a joy, without sacrificing type safety or performance.
// app/models/Post.ts
@table('posts')
export class Post extends Model.using(SoftDeletes) {
@column() title!: string;
@column('text') body!: string;
@column() slug!: string;
@belongsTo() author!: User;
static recent = Post.query().latest().limit(10);
}
// app/controllers/PostController.ts
export class PostController extends Controller {
async index(http: HttpContext) {
const posts = await Post.query()
.with('author')
.latest()
.paginate();
return http.json({ posts });
}
async store(http: HttpContext) {
const data = await StorePostRequest.validate();
const post = await Post.create({ ...data, authorId: http.user.id });
return redirect(`/posts/${post.slug}`);
}
}
Batteries absolutely included
Explore the rich ecosystem of first-party packages designed specifically for Zerotal. Perfectly integrated, incredibly powerful.
App, container, providers, conventions
Active Record, migrations, query builder
Immutable date-time powered by Temporal
Sessions, login, API tokens, 2FA
RBAC, TOTP two-factor authentication
OAuth2: GitHub, Google, Apple
Streaming, structured output, typed tools
Server-driven reactive components
Mail, SMS, Slack, and database channels
Background jobs and cron scheduling
Multi-driver caching layer
Local, S3, and R2 file storage
Attach files to models, with image conversions
Schema-based request validation
Model change history and manual events
Tenant isolation strategies
Tracing, logging, and observability
Ready to build your
next big idea?
One command scaffolds a working app — routing, models, auth, and a frontend of your choosing. Read the guide and ship something today.
Read the Documentation