A Rust async web framework
I’ve been working on a project for a few months now, and I’m very excited to be ready to share it with other people. Its called cargonauts, and its a web framework for Rust, built on top of tokio. The goal of cargonauts is straightforward: it should be easier than it is to write a well-factored and maintainable web application.
I think that Rust is a great choice for writing maintainable software. Many people emphasize Rust’s performance and safety, but to me the benefits of the language are more holistic: by the way it controls aliasing and mutability, and by emphasising generics over inheritance, Rust is designed to encourage writing the right thing the first time, and to make it easy to evolve your code as requirements change.
cargonauts is intended to help you structure your application, by defining patterns you can use to build the components of your application. These building blocks are joined together in a highly decoupled way, enabling you to grow your application as your requirements change. It adopts best practices from REST, encouraging you to structure your application as as a network of related resources. Its also entirely asynchronous, so that your application will perform well and scale with use.
There’s still a lot to be done! This is an early release; cargonauts is still unfinished and unstable. There are clear performance issues, the APIs will change, and (most importantly) it has not been hardened or audited for security. I do not recommend using it in production at this point.
But if you’re interested in exploring cargonauts, I’ve written the beginnings of some docs. I’ve also set up a gitter channel to answer questions about it. And if you want to get involved, there’s plenty to do.
Also, cargonauts is not yet available through crates.io, because it depends on git branches of some of its dependencies. I’ve written a CLI though to set up your application for you, which you can install through cargo:
cargo install cargonauts-cli
This is definitely a “soft launch.” cargonauts is still growing, and there’s a lot of opportunity to get involved and impact it right now. I’m really eager to get other peoples’ feedback on what I’ve done so far and where we should go. If you’re interested, feel free to get in touch!