Beginner friendly web framework

Hello, I want to start off my webdev journey with Rust. I have a basic understanding of HTML, CSS and JS but I haven't gone any further that road.

What is an easy to use beginner friendly web framework I should look into? I'm looking for something that has a beginner friendly tutorial/documentation.

My goal is to build a web application for my portfolio.

1 Like

I've enjoyed using warp, but don't know whether it quite fits your criteria, as I'm not quite a beginner.

1 Like

Hello Hossain ^^

I definitly recommend reading "the book" or "rust by example" first. You find those ressources here: https://www.rust-lang.org/learn . If you already installed the rust toolchain on your computer you may also use rustup doc in your shell to find links to these ressources offline on your computer.

After you made yourself comfortable with rust in general, checkout this site: http://www.arewewebyet.org/

I like to do some experiments with different libraries and frameworks first, before I commit myself to one or several different ones. Different people have different minds. One which works for one might not be the best solution for another.

Also Rust has an amazing supply of small crates (libraries) you can choose from. It might be usefull for you not to search for the single best solution but for a collection of crates serving your needs.

1 Like

@Hossain_Adnan

When you say "web frame work" do you mean at the server end or the client end or something that wraps up both?

I am pretty much a rank beginner at Rust and we have a project with fairly simple requirements of a web server. Also I have not investigated what options are available in the Rust web server space. I ended up using Rocket https://rocket.rs/ Only becaue of seeing this presentation by it's creator Sergio Benitez on YouTube: RustConf 2017 - Building Rocket by Sergio Benitez https://www.youtube.com/watch?v=t_FUZ34ahBE&t=397s

I can only say that it went really well. Rocket is pretty easy to use once you have some Rust under your belt. Serving up static content is trivial. Creating a REST API and fetching data from postgres is pretty simple.

I think if you are familiar with node.js and the Express web server framework you should be able to get along with Rocket just fine.

I cannot say anything about ultimate performance, we do not have such requirements and I have not tested.

We also require websockets for this application. We use https://crates.io/crates/ws/0.3.1

All of this has been up and running for some months now.

Now, if you mean a framework for using Rust in the browser the only thing I am aware of is Yew : https://github.com/yewstack/yew as far as I can tell this works somewhat like React. I'd be checking it out now if I had the time. I like the idea of having our entire system in Rust, from remote sensor devices to server processes in the cloud to the web browser.

1 Like

Oh, did I mention the Rocket documentation is pretty good.

And Sergio Benitez seems very keen develop Rocket into the future.

Actix is very nice and super easy to get started with. Their website gives a good overview of what it looks like to get started:

https://actix.rs/

4 Likes

Does actix cover front-end?

I think I'm looking for both in the library, in hopes that it makes looking for resources (and connecting the dots) easier. I'm looking into Rocket now but Actix is intrigues me.

Personally I don't like over arching "frame works" that are often very opinionated and dictate how your code should be. They tend to make what I want to do harder rather than easier. I guess it depends on what it is you are wanting to build.

As far as I'm concerned the language and the libraries available, a lot in the case of Rust, are my "frame work".

As such I'm happy that things like Rocket take care of all the HTTP details and let me get on with rest (REST, get it?) for the most part.

The only Rust help at the browser end I have found so far is Yew. That is very interesting but I'm not sure I'm up for the dev cycle it must require. I hate having to build things for the browser, all that babel compiling of JSX and webpack bundling time consuming nonsense. It seems to defeat the whole point of having Javascript in the browser were you can tweak your code and see it run almost immediately.

But as I said, a complete end to end solution in Rust is very compelling.

I took a look at Actix. Seems very interesting and sound. I'll be looking closer the next time a web server requirement comes up.

1 Like

No. Actix, will just handle the server side.

Yew does seem to be the most popular if you want to do client side development in Rust.

The only thing I've found so far that does that is Percy:

If that is something you really want, that is worth looking into for sure.

1 Like

Percy

Oh thanks for this, I love it.

1 Like

Wow, Percy looks cool. Works with Rocket and Actix it seems.

actix-web does, you can use a template lib to facilitate the dev. But I think it depend the use case. My use case is mainly an API server with few html pages for reporting status informations, etc.. As a full web application with a complex UI a templating approach server side with actix-web don't seems a good way for me.

2 Likes

Hi!

Seed core member here. I'm biased here, but I recommend to look at Seed because it's designed to be beginner-friendly and documented from the start.

There will be a new official website soon; a book with tutorial for Seed+Rocket+Diesel exists; there are examples with e.g. Actix and Websockets; RealWorld example; Rust or Webpack template with step by step tutorial, etc. - links in awesome-list.

And I'm writing Seed apps as a freelance developer, so it's not only a hobby project anymore. Don't be affraid to contact me directly if you encounter some problems with docs or the framework.

4 Likes

@MartinKavik That looks cool. :slight_smile:

I just want to say great job putting all of that effort into the documentation and ease of use! Documentation and developer experience are very important in my opinion and it seems like you have definitely put great effort into it. I very much agree with your goals for the project. :+1:

2 Likes

Thank you very much, Seed looks very promising. I will, most definitely, contact you if I get stuck. Do you happen to have an IRC/Slack/Matrix/Gitter channel?

Just click on his name on his post and PM him.

1 Like

PM or martin@kavik.cz or create an issue in Seed's repo. We don't have official chat or forum (yet).

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.