27.7.2022 |

hurlurl.com - shortlink load balancer

Für ein Event auf hellopaint.io brauchte ich ein Tool, dass von einem Link aus zufällig auf verschiedene Ziel-Links weiterleitet. So gab es 7 Boards und wir wollten, das die Teilnehmer:innen sich gleichmäßig auf die Boards verteilen. Ich konnte keinen Service finden, der so etwas anbietet, deswegen hab ich mich selbst ans Werk gemacht, und hurlurl.com entwickelt.

Die Website ist komplett in Rust geschrieben, Frontend und Backend. Im Folgenden teile ich ein paar Erkenntnisse:

Das Frontend nutzt Yew, eine React-ähnliche UI library. Statt jsx nutzt yew ein Rust Makro, !html, um HTML darzustellen. Dank der mächtigen Makro-Unterstützung in Rust bekommt man sogar IDE Support in den HTML Makros. Yew hat wie React Unterstützung für "class" based components und functional components.

Der geschriebene Rust Code wird mithilfe von trunk zu WebAssembly kompiliert. Mithilfe von wasm-bindgen kann man mit Javascript interagieren und so problemlos z.B. HTTP-Requests von Rust aus machen. Das resultierende Binary ist klein, die ganze Seite lädt in 380kb.

Yew ist echt cool und zeigt wie vielseitig Rust ist, aber in React wäre ich mit dem Frontend vermutlich 4x schneller fertig gewesen.

Das Backend nutzt Axum, einen HTTP-Server für Rust, ähnlich wie express aus der JavaScript-Welt. Als ORM benutze ich Diesel. Der Query Syntax ist etwas verwirrend (aber er funktionert...). Nächstes mal würde ich hier vermutlich auf etwas anders setzen.

Vielen Dank an @valerieschramm für die Namensidee und das CSS.

Zufällige Search Engine: https://hurlurl.com/q_SEt

Link info Seite: https://hurlurl.com/info/q_SEt

Links:

https://hurlurl.com/

https://github.com/lucasmerlin/hurlurl

https://yew.rs/

https://trunkrs.dev/

https://github.com/rustwasm/wasm-bindgen

https://github.com/tokio-rs/axum

https://diesel.rs/

Zur Übersicht

Mehr vom DevSquad...

Dennis Hundertmark

Appwrite - Open-Source End-to-End Backend Server

Simon Jakubowski

Generate Swagger Documentation from Nest API