Skip to content

Boden

Cross-Platform Framework

Build purely native cross-platform user experiences with Boden

With Boden you can create native mobile cross-platform applications from one codebase. Boden uses the real user interface controls of the target platform, so users won't recognize any difference to the look and feel they are already used to.

Compile native apps from a single C++17 codebase

Write your mobile apps in modern C++17 and compile 100% native Android and iOS apps from a single statically typed codebase. No need for scripting. No overhead introduced by virtual machines. Using Boden is straight forward:

// MainViewController.cpp
#include <bdn/ui.h>
#include <bdn/ui/yoga.h>

#include "MainViewController.h"

using namespace bdn;
using namespace bdn::ui;

MainViewController::MainViewController()
{
    _window = std::make_shared<Window>();
    _window->title = "AwesomeApp";
    _window->geometry = Rect{0, 0, 400, 300};
    _window->setLayout(std::make_shared<yoga::Layout>());

    auto button = std::make_shared<Button>();
    button->label = "Hello World";

    _window->contentView = button;

    _window->visible = true;
}

Lay out your user interface with Flexbox layouts

With Boden laying out your UI is a breeze. Just define your layouts using Flexbox stylesheets directly in C++. Boden uses Facebook's Yoga Layout engine accross all platforms.

// MainViewController.cpp
#include <bdn/ui.h>
#include <bdn/ui/yoga.h>

#include "MainViewController.h"

using namespace bdn;
using namespace bdn::ui;

MainViewController::MainViewController()
{
    _window = std::make_shared<Window>();
    _window->title = "AwesomeApp";
    _window->geometry = Rect{0, 0, 400, 300};
    _window->setLayout(std::make_shared<yoga::Layout>());
    _window->stylesheet =
                FlexJsonStringify({
                                      "justifyContent": "Center", 
                                      "alignItems": "Center"
                                  });

    std::shared_ptr<Button> button = std::make_shared<Button>();
    button->label = "Hello World";

    _window->contentView = button;
    _window->visible = true;
}

Reuse your existing programming skills

Boden builds upon well-established technologies and best practices where possible. A Boden string literally is an std::string. No custom containers, smart pointers, or reinvented basics. This allows you to reuse your existing knowledge and focus on what's most important: your app.