{"id":13721583,"url":"https://github.com/AshampooSystems/boden","last_synced_at":"2025-05-07T13:33:34.878Z","repository":{"id":40501960,"uuid":"150398406","full_name":"AshampooSystems/boden","owner":"AshampooSystems","description":"Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io","archived":false,"fork":false,"pushed_at":"2021-12-17T14:46:57.000Z","size":38717,"stargazers_count":1694,"open_issues_count":29,"forks_count":96,"subscribers_count":68,"default_branch":"master","last_synced_at":"2025-04-08T11:11:38.162Z","etag":null,"topics":["android-ui","cpp","cpp17","cross-platform","ios-ui","mobile","mobile-app","mobile-development"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AshampooSystems.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.FDL-1.3.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-26T09:01:46.000Z","updated_at":"2025-04-06T03:07:54.000Z","dependencies_parsed_at":"2022-08-09T22:21:31.466Z","dependency_job_id":null,"html_url":"https://github.com/AshampooSystems/boden","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AshampooSystems%2Fboden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AshampooSystems%2Fboden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AshampooSystems%2Fboden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AshampooSystems%2Fboden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AshampooSystems","download_url":"https://codeload.github.com/AshampooSystems/boden/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252887364,"owners_count":21819884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-ui","cpp","cpp17","cross-platform","ios-ui","mobile","mobile-app","mobile-development"],"created_at":"2024-08-03T01:01:18.887Z","updated_at":"2025-05-07T13:33:33.253Z","avatar_url":"https://github.com/AshampooSystems.png","language":"C++","readme":"![](README/boden-github.svg)\n\n\u003ch1 align=\"center\"\u003eBODEN CROSS-PLATFORM FRAMEWORK\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e\n\t\u003cp\u003eBuild purely native cross-platform experiences with Boden\u003c/p\u003e\n\t\u003ca href=\"https://www.boden.io\"\u003eWebsite\u003c/a\u003e\n\t\u003cspan\u003e ⬡ \u003c/span\u003e\n\t\u003ca href=\"https://www.boden.io/getting-started\"\u003eGetting Started\u003c/a\u003e\n\t\u003cspan\u003e ⬡ \u003c/span\u003e\n\t\u003ca href=\"https://www.boden.io/reference\"\u003eAPI Reference\u003c/a\u003e\n\t\u003cspan\u003e ⬡ \u003c/span\u003e\n\t\u003ca href=\"https://www.boden.io/guides\"\u003eGuides\u003c/a\u003e\n\t\u003cspan\u003e ⬡ \u003c/span\u003e\n\t\u003ca href=\"https://twitter.com/bodenhq\"\u003eTwitter\u003c/a\u003e\n\t\u003cspan\u003e ⬡ \u003c/span\u003e\n\t\u003ca href=\"#contact--feedback\"\u003eFeedback\u003c/a\u003e\n\u003c/h4\u003e\n\n![](docs/docs/boden-demo.gif)\n\n* **Native widgets**: Instead of drawing widgets that look nearly identical to the platform's design, Boden uses native OEM widgets ensuring that your app will always have a truly native look and feel.\n* **Fast**: Boden is written in modern C++17 to make development easy and apps fast and battery-friendly.\n* **Open**: Boden is an open framework and welcomes contributions and feedback from the community. We want you to shape its development so Boden can meet your requirements.\n\n\u003e Note: This is a beta release. The Boden API is not yet fully complete and stable.\n\n## Table of Contents\n\n* [Getting Started](#getting-started)\n* [Your First Boden Application](#your-first-boden-application)\n* [Hello World](#hello-world)\n* [Documentation](#documentation)\n* [License](#license)\n* [Contact \u0026 Feedback](#contact--feedback)\n\n## Getting Started\n\n### Prerequisites\n\n**On a Mac**: macOS 10.14+, [Xcode 10.1+](https://developer.apple.com/xcode/), [Python 3.4+](https://www.python.org/downloads/), [CMake 3.15.0+](https://cmake.org/download/).\n\n**On Windows**: Windows 10, [Python 3.4+](https://www.python.org/downloads/), [CMake 3.10.2+](https://cmake.org/download/), [Ninja](https://github.com/ninja-build/ninja/releases), [Git](https://git-scm.com/download/win), [Oracle JDK 8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), and [Android Studio](https://developer.android.com/studio) (with Android NDK, see the [installation instructions](https://www.boden.io/getting-started/installing_dependencies/windows/) for further details).\n\n**On Ubuntu 18.04**: `sudo apt update \u0026\u0026 sudo apt install git cmake ninja-build python python3-distutils openjdk-8-jdk qemu-kvm` plus [Android Studio](https://developer.android.com/studio/) (with Android NDK, see the [installation instructions](https://www.boden.io/getting-started/installing_dependencies/linux/) for further details).\n\n### Step 1: Clone the Boden Repo\n\n\tgit clone --recurse-submodules https://github.com/AshampooSystems/boden.git\n\n### Step 2: Generate and Open an IDE Project\n\n\tcd boden\n\tpython boden.py open -t bodendemo\n\nThis will bring up Xcode on macOS or Android Studio on Linux/Windows.\n\nIf anything goes wrong, please make sure that all dependencies are installed and set up correctly. Check out our extended guides for help:\n\n* [Building Boden on macOS](https://www.boden.io/getting-started/building/mac/)\n* [Building Boden on Windows](https://www.boden.io/getting-started/building/windows/)\n* [Building Boden on Linux](https://www.boden.io/getting-started/building/linux/)\n\n### Step 3: Run a Boden Example Application\n\nIn Xcode, select the `bodendemo` target and hit \u003ckbd\u003eCmd\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e.\n\nIn Android Studio, select the `bodendemo` target and hit \u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eF10\u003c/kbd\u003e.\n\n## Your First Boden Application\n\nTo create your first Boden app, open up a terminal (or command prompt), change to your local `boden` directory, and execute the following commands:\n\n\tpython boden.py new -n AwesomeApp\n\tcd AwesomeApp\n\tpython ../boden.py open\n\nThis will create a new folder named `AwesomeApp` and generate source and project files for a simple Hello World cross-platform application. The last command will prepare and open an Xcode project on the Mac or an Android Studio project on Linux/Windows.\n\nIn Xcode, select the `AwesomeApp` target and then press \u003ckbd\u003eCmd\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e to build and run the Hello World application.\n\nIn Android Studio, wait for Gradle to finish its sync and configuration processes and then select the `bodendemo` target and press \u003ckbd\u003eCmd\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e to build and run the example application, then select the `AwesomeApp` target and then press \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e on Mac or \u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eF10\u003c/kbd\u003e on Linux/Windows to build an run the Hello World application.\n\n\u003e Note: On macOS and Linux you can also simply type `./boden` instead of calling `python boden.py` explicitly. If you want to build the Android version of the app on macOS, run `../boden open -p android`.\n\n## Hello World\n\nHere's a quick look at the source code generated by the `boden new` command:\n\n```C++\n// MainViewController.cpp\n#include \u003cbdn/ui.h\u003e\n#include \u003cbdn/ui/yoga.h\u003e\n\n#include \"MainViewController.h\"\n\nusing namespace bdn;\nusing namespace bdn::ui;\n\nMainViewController::MainViewController()\n{\n    _window = std::make_shared\u003cWindow\u003e();\n    _window-\u003etitle = \"AwesomeApp\";\n    _window-\u003egeometry = Rect{0, 0, 400, 300};\n    _window-\u003esetLayout(std::make_shared\u003cyoga::Layout\u003e());\n\n    auto button = std::make_shared\u003cButton\u003e();\n    button-\u003elabel = \"Hello World\";\n\n    _window-\u003econtentView = button;\n\n    _window-\u003evisible = true;\n}\n```\n\n`MainViewController.cpp` is the most interesting part of the source generated for the Hello World application. The main view controller will be instantiated at application launch. It's responsible for setting up the application's user interface.\n\nHere's what the code does in detail:\n\nFirst, create a new `Window` and set its title to `AwesomeApp`:\n\n```C++\n_window = std::make_shared\u003cWindow\u003e();\n_window-\u003etitle = \"AwesomeApp\";\n```\n\nTo get an automatic layout, use a `yogalayout::Layout` and set a default window size:\n\n```C++\n_window-\u003egeometry = Rect{0, 0, 400, 300};\n_window-\u003esetLayout(std::make_shared\u003cyoga::Layout\u003e());\n```\n\nThen, instantiate a new `Button` and set its label to \"Hello World\":\n\n```C++\nauto button = std::make_shared\u003cButton\u003e();\nbutton-\u003elabel = \"Hello World\";\n```\n\nAs the button is the only control which will be displayed in this example, set it as the window's content view:\n\n```C++\n_window-\u003econtentView = button;\n```\n\nFinally, make the window visible:\n\n```C++\n_window-\u003evisible = true;\n```\n\n## Documentation\n\nYou can find the full [Boden documentation](https://www.boden.io/reference) on our [website](https://www.boden.io).\n\nThe Boden documentation is still work in progress. If you can't find the information you're looking for, please don't hesitate to ask by opening a [GitHub issue](https://github.com/AshampooSystems/boden/issues) or [contacting us directly](#contact--feedback).\n\n## License\n\nYou may license Boden under one of the following open-source licenses:\n\n* [GNU General Public License Version 2](LICENSE.GPL-2.md)\n* [GNU General Public License Version 3](LICENSE.GPL-3.md)\n* [GNU Lesser General Public License Version 2.1](LICENSE.LGPL-2.1.md)\n* [GNU Lesser General Public License Version 3](LICENSE.LGPL-3.md)\n\nFor commercial/proprietary licensing, please contact us at boden-team@ashampoo-systems.com.\n\n## Contact \u0026 Feedback\n\nWe are happy about your feedback!\n\nGet in touch with us and stay up to date about Boden:\n\n* Follow us on Twitter: [@bodenhq](https://twitter.com/bodenhq)\n* Join the [Boden Google Group](https://groups.google.com/forum/#!forum/boden-cross-platform-framework)\n* Email us: [boden-team@ashampoo-systems.com](mailto:boden-team@ashampoo-systems.com)\n\nIf you find something that is missing or doesn't work, please consider opening a [GitHub issue](https://github.com/AshampooSystems/boden/issues).","funding_links":[],"categories":["GUI","C++","Engines"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAshampooSystems%2Fboden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAshampooSystems%2Fboden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAshampooSystems%2Fboden/lists"}