Reloading... 0.0s

01

02

03

.layout = .center, .layer = .grid(14, 1, .palette(.grid_color))

.transform = .direction_scale(.down, .px(4), 1.05), .border = .simple(.palette(.tint)))

codex-engine rendered in 0.00ms

A

toolbox

for the Web

Senet includes a Frontend [0], Backend [1], and CLI [2]. Yet ships with zero dependencies.

Out of the Row production defaults, and +100 UI Components.

THIS entire website, is just a mere ~290kb .

Powered By

Used By

Vaporization

Vaporization is a tool that allows you to generate UI from data such as structs, strings, numbers, and arrays, or even markdown.

Vaporization cuts, down on boilerplate, and repetition.

Vaporizing structs returns forms with, error handling, tooltips, and validations.

Vapor/React Form Comparison

Below is a code line comparison of a Vapor form, and a React form. The React version uses Zod, React-Hook Form, Tailwind, and shadcn/ui.

~120 Lines

vaporize.zig

~560 Lines

react-hook-zod-shad.zig

Templates

A framework so simple, even

Claude built the following with just the docs!

Senet, has been tested, by real users and is currently running in production, the goal was to create documentation that is easy to read, and easy to navigate. But also, can be fed into LLMs, so that one can query, and create.

.width(.percent(100)).padding(.tb(64, 64)).layout(.x_even).border(.top(.hex("#E4E4E4")))

Vapor

Is a Compile-Time UI Engine, which takes a programmer first approach to building UIs
ZIG → WASM → UI

Reverb

Is a simple, yet powerful, backend framework for Zig. Zero runtime allocations, High performance, Express like.

Metal

Metal a full featured cli tool for deploying, building, and managing Senet Applications.

.dots(0.5, 8, .black).shadow(.card(.black))

vapor.zig

1

// All normal Zig code

2

const

Vapor = @import(

"vapor"

);

3

4

// No useState gymnastics

5

var

counter: i32 =

0

;

Vapor Code Sample

Vapor lets you build user interfaces using a simple, what you see is what you get approach. The code on the left shows two core concepts that make Vapor special: automatic UI updates and flexible styling.

Notice how the counter updates? We use a plain variable counter for the state, no special hooks or functions. Text automatically updates when counter changes.

The Inline Style Method (Chaining) For quick or unique styles, you can "chain" modifiers directly onto the component. This is fast, readable, and keeps the styles right next to the component they affect.

0

Reverb

Reverb is a backend web framework that is built on top of Loom.

Reverb, has a focus on performance, built-in defaults, and a simple API.

reverb.zig

1

const

std = @import(

"std"

);

2

const

Reverb = @import(

"reverb"

);

3

4

fn

ping

(ctx: *Reverb.Context) !void {

5

try

ctx.

STRING

(

"Hello World!"

);

Simple Routing & Powerful Middleware

Send data to client, and database with one liners. Automatic handling of errors, middleware, and more.

reverb_middleware.zig

1

const

std = @import(

"std"

);

2

const

Canopy = @import(

"canopy"

);

3

4

const

User =

struct

{

5

name: []

const

u8,

websocket.zig

1

const

std = @import(

"std"

);

2

const

loom = @import(

"loom"

);

3

const

Server = @import(

"reverb"

).Server;

4

const

Context = @import(

"reverb"

).Context;

5

const

Websocket = loom.WebSocket;

Builtin WebSockets

Setup websockets with ease, and use them to communicate with anyone.

Senet has a built-in WebSocket server.

Vapor also has a built-in WebSocket client.

Community

Github

Discord

Youtube

SENET

Lace up 🤘