/rusticify

App for brainstorming & sharing ideas 🦀 Learning Project

Primary LanguageRustApache License 2.0Apache-2.0

Rust icify

rusticify.gif

Inspiration

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.

What’s implemented:

  • 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

Run

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

Pre-commit actions

cargo fmt
cargo clippy --fix --allow-staged -- -A clippy::type_complexity -A clippy::too_many_arguments

Screenshot

rusticify.png

Contributing

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.

❤️