Skip to content
/ beet Public

A personal application framework

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE.txt
MIT
LICENSE-MIT.txt
Notifications You must be signed in to change notification settings

mrchantey/beet

Repository files navigation

beet

A personal application framework

Crates.io version Download docs.rs docs

Beet is a framework for building user-modifiable applications, like smalltalk or hypercard. Everything from the CLI to client applications is a""Bevy App"", and all structure and behavior is written in Entity Component System architecture.

🚧 Mind your step! 🚧

Beet is under construction, if this project is of interest please come and say hi in the Beetmash Discord Server.

readiness meter

  • 🦢 ready to go: documented and tested
  • 🐣 near stable: incomplete docs
  • 🐉 highly experimental: here be dragons

Beet crates fall into a few main categories.

Utils

General patterns and tools for application development.

Crate Status Description
beet_core 🦢 Core utilities and types for other beet crates
beet_net 🐣 Transport agnostic networking for bevy applications.

Control Flow

Control flow crates for use in behavior paradigms like behavior trees, utility AI or agentic systems.

world
  .spawn((
    Name::new("My Behavior"),
    Sequence,
    children![
      (
        Name::new("Hello"),
        EndWith(Outcome::Pass),
      ),
      (
        Name::new("World"),
        EndWith(Outcome::Pass),
      ),
    ],
  ))
  .trigger_target(GetOutcome)
  .flush();
Crate Status Description
beet_flow 🦢 An ECS control flow library
beet_spatial 🐣 Spatial actions built upon beet_flow
beet_ml 🐉 Machine Learning actions built upon beet_flow

Web

Crates for building and deploying web apps. These crates are very experimental and changing frequently.

#[template]
fn Counter(initial: i32) -> impl Bundle {
  let (get, set) = signal(initial);

  rsx! {
    <button onclick=move |_| set(get() + 1)>
      Cookie Count: {get}
    </button>
  }
}
Crate Status Description
beet_dom 🐉 Utilities for dom rendering and interaction
beet_parse 🐉 Parsers for various text and token formats
beet_rsx 🐉 An Astro inspired templating system built with bevy
beet_rsx_combinator 🐉 JSX-like parser combinator for Rust
beet_router 🐉 Transport agnostic routing for bevy applications
beet_build 🐉 Codegen and compilation tooling for beet
beet_design 🐉 Design system and components for beet rsx
beet-cli 🐉 Tools for building and deploying beet apps
beet_site 🐉 The beet website, built with beet

Experiments

Crate Status Description
beet_clanker 🐉 Structured context and tool calling for llms
beet_examples 🐉 Bits and pieces for substantial beet examples
emby 🐉 the beetmash ambassador

Bevy Versions

This chart is for matching a bevy version against a particular beet version.

bevy beet
0.17 0.0.7
0.16 0.0.6
0.15 0.0.4
0.14 0.0.2
0.12 0.0.1

Local Development

Required Tools

  • Rust nightly
  • Just

Running

Note that testing all crates involves compiling many crates, doing so from scratch usually results in a stack overflow in the rust compiler. To prevent this either run with RUST_MIN_STACK='some_gigantic_number', or just keep re-running the command until its all compiled. I usually just do the latter.

git clone https://github.com/mrchantey/beet
cd beet
just init-repo
just test-all

About

A personal application framework

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE.txt
MIT
LICENSE-MIT.txt

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •