Skip to content

Boden

Cross-Platform Framework

Create purely native cross-platform user experiences with Boden

Boden empowers you to create native mobile cross-platform applications from a single codebase. It uses native widgets that match the look and feel users expect from their platform.

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 scripting, no virtual machine overhead. Using Boden is straightforward:

// 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;
}

Create flexible user interfaces with Flexbox layouts

Boden integrates Facebook's Yoga Layout engine, so creating UI layouts is a breeze on any platform. Simply define your layouts through Flexbox stylesheets directly in your C++ code and you're good to go.

// 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;
}

Use your existing programming skills

Boden builds upon mature technologies: no custom containers, no custom smart pointers, no steep learning curve. You focus on your app, Boden takes care of the rest.