docs/overview

El manual de zenit

Construye interfaces de escritorio para macOS verdaderamente nativas en Zig. zenit reúne ventanas, renderizado en GPU, texto, métodos de entrada y accesibilidad en un modelo de UI claro; este manual te lleva de tu primera ventana a una app de producción mantenible.

Empieza en 5 minutos
$zig build run
0.15.2Versión de Zig
MetalBackend GPU actual
2 tiersAPI pública: ui.X y ui.<group>.X
src/main.zig
const std = @import("std");
const ui = @import("ui");
const App = @import("zenit_app").App;

fn mountUi(cx: *ui.Cx, _: *ui.Scope) anyerror!*ui.Node {
    return ui.text(cx, "Hello, zenit!", .{
        .font_size = cx.tokens.font_size.xxxl,
        .color = cx.tokens.color.fg_primary,
    });
}

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();

    const app = try App.init(gpa.allocator(), .{
        .window = .{ .title = "Hello" },
    });
    defer app.deinit();
    try app.runWith(mountUi);
}
¿Desarrollas con Claude Code u otro agente? Instala primero la zenit UI dev Skill.

Empaqueta este manual, la tabla de decisión de componentes y las trampas de proyectos reales en instrucciones que tu agente carga cuando las necesita, para que el código que escribe siga las convenciones de zenit.

Ruta de aprendizaje

Recórrela una vez, en orden —unos 45 minutos— y tendrás el modelo mental completo para crear apps con zenit por tu cuenta.

La arquitectura que usarás

Las apps dependen solo de la capa pública estable; zenit se encarga de la plataforma y el renderizado.

LAYERS
zenit.attach(dep, exe) añade exactamente dos importaciones de módulo a tu ejecutable —ui y zenit_app—, luego compila los puentes nativos y enlaza los frameworks del sistema. Los módulos internos ni siquiera están en tu grafo de compilación: no es “mejor no usarlos”, es “no se puede”.

Más que un conjunto de APIs

Estas tres capacidades atraviesan el runtime, el stack de texto y las herramientas; cada una está respaldada por una demo ejecutable y evidencia en ventana real.

Tres principios

Síguelos y tu código se mantendrá claro mientras zenit siga evolucionando rápido.

01
Importa solo desde la capa pública

Usa ui.*, ui.<group>.* y zenit_app.App; nunca entres en los directorios internos.

02
Deja que los datos guíen la UI

El estado persistente vive en Signals o en estado enlazado; deriva con Memo y aplica efectos secundarios con Effect.

03
Tokens primero

Color, tipografía, espaciado y radios vienen del tema; cuando debas salirte de la escala, decláralo con ui.arb.

zenit · Doble licenciaGratis para proyectos de código abierto bajo GPL-3.0-only; los productos cerrados o comerciales necesitan una licencia comercial.Contacta con el autor: zongyi.xzy#gmail.com (cambia # por @)zenit 5f9add5+wip 2026-09-30