Native User Interface and Interaction Systems
A declarative, reactive UI framework written in Rust — with first-class state machines, spring-physics animation, and GPU-accelerated rendering.
Website · Core Framework · crates.io · Discord · Apache-2.0
Blinc is the core UI system everything here builds on. It treats interfaces as declarative, reactive descriptions of state rather than imperative trees of widgets, so your UI stays in sync with your data automatically.
- 🧩 Declarative & reactive — describe what the UI should be; Blinc keeps it consistent as state changes
- 🔁 First-class state machines — model interaction and view logic as explicit, inspectable states
- 🌊 Spring-physics animation — natural, interruptible motion instead of fixed-duration tweens
- ⚡ GPU-accelerated rendering — fast, hardware-backed drawing at the core
- 🦀 Pure Rust — memory-safe, portable, and dependency-light
[dependencies]
blinc_app = "0.5"See the Blinc repository for documentation, examples, and getting-started guides.
Blinc is extended by a set of focused crates. Each one is independent — pull in only what your project needs.
| Package | What it does |
|---|---|
| blinc_canvas_kit | Canvas authoring toolkit: interactive scene graphs (pan, zoom, selection, grid), a 3D scene kit, and p5.js-style immediate-mode sketching over Blinc's DrawContext. |
| blinc_portal_ui | Immediate-mode widget toolkit for canvas closures — render real interactive widgets and free-form painting inside a Canvas. |
| blinc_node_editor | A metadata-driven node-graph editor toolkit built on blinc_canvas_kit. Typed ports, bezier connectors with drag-to-connect, immediate-mode content widgets inside node bodies, group chrome, theme-aware rendering, frustum-culled paint, and a signal + event API designed for reactive Blinc hosts. |
| Package | What it does |
|---|---|
| blinc_skeleton | Runtime poser for Blinc 2D/3D canvases. |
| blinc_gltf | glTF 2.0 loader for Blinc. |
| blinc_lottie | Lottie animation player for Blinc sketches. |
| Package | What it does |
|---|---|
| blinc_input | Polling-style input state for Blinc sketches and canvases. |
┌─────────────┐
│ Blinc │ declarative · reactive · GPU
│ core UI │
└──────┬──────┘
│
┌────────────────────────────────────────────┐
│ │
Canvas & scene Animation & assets
───────────── ──────────────────
canvas_kit skeleton
portal_ui gltf
node_editor lottie
- Start with Blinc — the core framework.
- Add the extension crates your project needs (canvas tooling, asset loaders, input, etc.).
- Visit blinc.rs for guides and reference material.
Contributions are welcome across the ecosystem. Open an issue or PR on the relevant repository, and check each project's README for setup and contribution notes.
Built with 🦀 by the BLINC project · blinc.rs