makepad  by makepad

Rust UI framework for native and web apps

Created 6 years ago
5,897 stars

Top 8.8% on SourcePulse

GitHubView on GitHub
Project Summary

Makepad is a Rust-based platform for building cross-platform UIs, targeting web (Wasm/WebGL), macOS (Metal), Windows (DX11), and Linux (OpenGL). It aims to provide a unified development experience for native and web applications, simplifying UI creation for developers familiar with Rust.

How It Works

Makepad utilizes a custom DSL for UI description and a Rust-centric architecture. It compiles Rust code to various native and web targets, leveraging platform-specific graphics APIs for rendering. This approach allows for a single codebase to target diverse platforms, potentially reducing development effort and increasing code reuse.

Quick Start & Requirements

  • Install Rust (nightly toolchain recommended).
  • Install cargo-makepad: cargo install --path=./tools/cargo_makepad
  • Install target toolchains: cargo makepad <target> install-toolchain (e.g., wasm, apple ios).
  • Run Makepad Studio: cargo run -p makepad-studio --release or cargo install makepad-studio.
  • Demo apps like UI Zoo and IronFish are available for reference.

Highlighted Details

  • Cross-platform compilation to Wasm, Metal, DX11, and OpenGL.
  • Custom DSL for UI definition.
  • Includes example applications like IronFish (synthesizer) and Robrix (Matrix client).
  • Supports multiple Rust targets via cargo-makepad.

Maintenance & Community

  • Active development with key contributors listed.
  • Discord server available for community interaction.

Licensing & Compatibility

  • MIT License.
  • Compatible with commercial and closed-source applications.

Limitations & Caveats

Web builds currently require the nightly Rust toolchain. Some runtime errors may lack line information without nightly.

Health Check
Last Commit

1 week ago

Responsiveness

1 day

Pull Requests (30d)
6
Issues (30d)
2
Star History
51 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.