Build applications that grow with Bevy ECS at every layer of the stack.
🚧 Mind your step! 🚧Beet is under construction, basic development workflows are incomplete and untested. If this project is of interest please come and say hi in thebevy/beet discord channel.
Beet
Bevy Everywhere
Very Bevy
- 100% Open
Beet inherits Bevy's MIT/Apache licenses - 100% Bevy
Bevy primitives all the way down, including the beet cli!
Very Bevy Web UI
#[template]
fn Counter(input: u32) -> impl Bundle {
let (value, set_value) = signal(input);
rsx! {
<div>
<button onclick={move |_| set_value(value() + 1)}>
"Count: " {value}
</button>
</div>
}
}
Very Bevy Server Actions
Pop open the dev tools to see your requests in flight!
// actions/add.rs
pub async fn get(input: JsonQuery<(i32, i32)>) -> Json<i32> {
Json(input.0 + input.1)
}
// components/server_counter.rs
#[template]
pub fn ServerCounter(initial: i32) -> impl Bundle {
let (get, set) = signal(initial);
let onclick = move |_: Trigger<OnClick>| {
spawn_local(async move {
set(actions::add(get(), 1).await.unwrap());
});
};
rsx! {
<div>
<Button
variant=ButtonVariant::Outlined
onclick=onclick>
Server Cookie Count: {get}
</Button>
</div>
}
}
Very Bevy Behavior
#[template]
fn SayHello(name: String) -> impl Bundle {
(
Name::new("My Behavior"),
Sequence,
RunOnSpawn,
children![
(
Name::new("Hello"),
ReturnWith(RunResult::Success)
),
(
Name::new(name),
ReturnWith(RunResult::Success)
)
]
)
}