At work, I frequently rely on lucid.app to brainstorm ideas with my colleagues or by myself. Typically, I share my ideas by sending either the diagrams themselves or screenshots of them. While I tend to stick with simple features like rectangles and arrows, I’ve been contemplating the idea of creating a similar tool in Rust. Not only would it allow me to learn the language, but it would also be an enjoyable project to work on.
- add/remove rectangle
- rectangle resizing
- rectangle repositioning
- wrapped text inside rectangles
- paste screenshot from clipboard
- connect nodes with arrows
- make app snapshot in memory and load from it (command + s[l])
- save app state to db and load from it
- change background color of rectangle
- move rectangle to front/back
- positioning text in rectangle
- buttons to cut/copy/paste text in rectangle and open all links in rectangle
- tabs support
- documents support
Tested only on MacOS, should work on Linux and Windows as well
cargo r
It runs on wasm as well, but it doesn’t have clipboard/limited file system features, also only desktop webview is supported.
cargo r --target wasm32-unknown-unknown
Build wasm static files:
cargo build --release --target wasm32-unknown-unknown
wasm-bindgen --target web --out-dir out target/wasm32-unknown-unknown/release/rusticify.wasm
wasm-opt -Os rusticify_bg.wasm -o rusticify_bg.wasm
cargo fmt cargo clippy --fix --allow-staged -- -A clippy::type_complexity -A clippy::too_many_arguments
Contributions are always welcome! Please adhere to this project’s code of conduct. If you have questions or suggestions, feel free to make an issue.
❤️