jtomschroeder / Cedar
Licence: mit
Rust framework for building visual/interactive applications
Stars: ✭ 136
Programming Languages
rust
11053 projects
Projects that are alternatives of or similar to Cedar
Tunapanel
Autogenerate live Web-based control panels for Rust programs
Stars: ✭ 133 (-2.21%)
Mutual labels: gui
Litegui.js
Javascript Library to create webapps with a desktop look-alike interface. All the widgets are created from Javascript instead of using HTML.
Stars: ✭ 131 (-3.68%)
Mutual labels: gui
Lambdaattack
Minecraft bot for servers. Currently supports stress testing. More features are planned
Stars: ✭ 133 (-2.21%)
Mutual labels: gui
Smartinvs
Advanced Inventory API for your Minecraft Bukkit plugins.
Stars: ✭ 132 (-2.94%)
Mutual labels: gui
Electron Python Example
Electron as GUI of Python Applications
Stars: ✭ 1,749 (+1186.03%)
Mutual labels: gui
React Nodegui Starter
Starter repository for react based native desktop apps using react-nodegui
Stars: ✭ 132 (-2.94%)
Mutual labels: gui
Atlas Python
For versatile GUIs written in HTML/CSS and Python (no JavaScript needed; also available for other languages) - The lightweight and easy-to-use toolkit to begin with GUI programming.
Stars: ✭ 133 (-2.21%)
Mutual labels: gui
Attendace management system
In this system we can fill attendance by face recognition
Stars: ✭ 135 (-0.74%)
Mutual labels: gui
Reactivereswift
Unidirectional Data Flow in Swift via FRP - Inspired by Elm
Stars: ✭ 133 (-2.21%)
Mutual labels: frp
Borealis
Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx).
Stars: ✭ 135 (-0.74%)
Mutual labels: gui
cedar 🌲
cedar
is a Rust framework for building visual/interactive applications.
Note: cedar
is in the experimental stage and rapidly evolving.
Getting started!
Add the following dependency to your Cargo.toml
:
cedar = { git = "https://github.com/jtomschroeder/cedar" }
Example: creating buttons & reactive text 🚀
#![feature(proc_macro)]
#![feature(proc_macro_non_items)]
extern crate cedar;
use cedar::hypertext;
type Model = i32;
#[derive(PartialEq)]
enum Message { Increment, Decrement }
fn update(model: Model, message: &Message) -> Model {
match message {
&Message::Increment => model + 1,
&Message::Decrement => model - 1,
}
}
fn view(model: &Model) -> cedar::dom::Object<Message> {
(hypertext! { |model|
<div>
<button click={Message::Increment}> + </button>
<div>{model}</div>
<button click={Message::Decrement}> - </button>
</div>
})(model)
}
fn main() { cedar::app(0, update, view) }
Design
A cedar
application is composed of a model, update, and view - all declared up-front:
- model: the state of our app
- update: how to update our state based on a message (i.e. event)
- view: how to transform our state into UI 'widgets'
This architecture is powerful, yet simple. Using a declarative approach, we can achieve impressive reactivity without having to worry about threads, locks, event routing, or view controllers.
Check out the examples!
Credits
Inspired by:
cedar
is released under the MIT license.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].