#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();
}
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.
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 โ- DescribeBuild a page with typed C++ elements.
- RenderGenerate semantic browser markup.
- ConnectOpen a live client connection.
- UpdateApply focused DOM operations.
Explore the prototype