* redirects to this repo until ready
"We don't want to lose time and money due to millions of unnecessary technical micro-decisions."
MoonZoon is a Rust Fullstack Framework.
* Authentication methods are described in Backend.md
- Live demo: moonzoon-demo.herokuapp.com
- Note: Heroku dyno slow cold starts may occur.
- Repo: github.com/MoonZoon/demo
- Note: You can use the repo as a template for your new project for now.
Rust on the Frontend and Backend [Always Bet on Rust]
Size & Speed
"Is it production-ready?"
"Why another framework? Are you mad??"
- I want to write products. Reliable products. Quickly. I want to enjoy the development. I don't want to play endlessly with tools, protocols and config files.
It's the best language.
I've written commercial or hobby projects in multiple languages (Js, CoffeeScript, TS, Elm, Elixir, PHP, C, C++, C#, Go, ..). However I want to write only in Rust.
Rust is hard to learn even for experienced developers, because they have to unlearn many things and adapt thought process to Rust concepts and best practices. However once you stop fighting the compiler, Rust takes your hand and push you to correct and efficient solutions.
I had similar feeling when I was learning to drive a car - it seems pretty hard/strange from the start but once you get used to it, you know that each control / button / pedal has it's specific place and purpose for a good reason. And it makes even more sense once you learn low-level stuff - e.g. how the transmission and a clutch work.
However steep learning curve isn't bad:
- It means that Rust doesn't hide real complexity behind too simple models.
- It's almost impossible for complete beginners to publish incomplete/buggy libraries.
Rust is designed so well that I feel nervous while I'm writing in other languages - I have to do compiler's work again in my head and think about weird things like typos in code,
undefineds, memory leaks, accidental mutations, how to write fast code without mutability, etc. It generates significant cognitive load so I can't focus so much on business logic and other important stuff.
I don't believe that you should use the most suitable language for a specific domain or problem at all costs. I think consistency among your / company projects, productivity and simplicity should have the highest priority. And Rust is a very universal language so I think it's a good choice for almost all cases.
There are also things that should be improved (and are improving):
- Compilation is still slow, but it's not so frustrating now.
- IDE support still isn't very good because of Rust complex types and macros but thanks to Rust Analyzer it's getting better every day.
targetfolder (it's something like
node_modules) can be pretty big.
"The API looks weird!"
- I would like to make it compilable on the stable Rust so I can't use some unstable features that would make the API a bit better.
- Or I wasn't able to find a simpler and nicer API - please let me know why and how do you want to improve it.
- Or we have just different experience and feel for graphic stuff.
"Who is developing it?"
"Could I help somehow? / Where can I find more information?"
- Join our Discord chat and don't hesitate to ask any questions or present your ideas.
- Create a pull-request if you want to fix typos, dead links, weird Czech-English sentences, etc.
- If you think MoonZoon will be useful for your project, I want to know that! (Use chat or firstname.lastname@example.org).
- Don't hesitate to tell your friends about MoonZoon and feel free to share the link (http://moonzoon.rs) on social platforms / forums / blogs / newsletters.
"My only concern is the “no SQL” comment. Will it be possible to use MZ with something like SQLx if I prefer?" (by @duspom)
- From the Philosophy & Non-Goals section: "E) Don't build artificial barriers for MoonZoon users - if they want to use REST, CSS or SQL, don't try to stop them."
- You don't have to use built-in persistent variables in actors. Or you can use them and query the persistent store (e.g. Postgre) directly.
Thank you for reading! We are waiting for you on Discord.