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.