Experimental C++ web UI framework

Build browser interfaces without moving your application into JavaScript.

Tatzel lets a C++ application describe UI elements, react to events, and update the browser through a compact real-time connection.

Early development โ€” APIs are still evolving.

main.cpp
#include <Tatzel/App.hpp>

int main()
{
    tatzel::App app;

    app.RegisterPage("/", [](auto ui)
    {
        ui.Heading("Hello from C++");
        ui.Paragraph("Rendered in your browser.");
        ui.Button("Continue", []
        {
            // Handle the event in C++.
        });
    });

    return app.Run();
}

Why Tatzel?

A direct path from native application logic to the web.

Strongly typed UI

Construct pages and components through C++ interfaces instead of stitching together strings and loosely typed callbacks.

Browser-native output

Use semantic HTML and ordinary CSS. Tatzel coordinates the interface; the browser still performs layout, accessibility, and rendering.

Real-time updates

Keep application state on the server and send focused DOM changes over a persistent connection.

Small deployment surface

Ship a native executable with static web assets instead of maintaining a separate frontend application and build pipeline.

Composable elements

Represent logical controls with one or more DOM parts while exposing one clean application-facing interface.

Framework-friendly styling

Bring your own CSS, use a classless framework, or build a custom design system without changing the C++ model.

How it fits together

C++ owns behavior. The browser owns presentation.

Tatzel maps logical UI elements to browser DOM elements. Initial markup creates the page efficiently; later updates target only the parts that changed.

Read the architecture overview โ†’
  1. DescribeBuild a page with typed C++ elements.
  2. RenderGenerate semantic browser markup.
  3. ConnectOpen a live client connection.
  4. UpdateApply focused DOM operations.

Explore the prototype

See how a Tatzel project could look.

Browse sample applications