That said, I started playing around with the Marten framework and while it's really new, it's an amazingly good start. I absolutely love the way that models automatically create migrations. Using Sqlite as a default is good for probably 99% of uses cases, and absolutely good for learning the framework (Sqlite itself is amazingly powerful).
I've been wondering what new shiny toys I was going to play around with over vacation during the holidays, and I now have my answer :).
Coming to your question, Amber is pretty much dead. Lucky or Kemal are the big ones to use. There are also Athena and Azu toolkit.
Url with variables routing? Csrf generation? Session loading? Forms processing? Templating? ORM? Assets pipeline integration?
If you're doing a very simple api, maybe stdlib will do. But for actual interactive webapp, it's not even close with what is normally used from web frameworks.
No. But then I find that trivial to implement. Takes around 10 lines of code.
> Csrf generation?
Yes. You can generate secure tokens and send them in headers.
> Session loading?
No. And this one is a pain point. But then I didn't find any session libs in go or nodejs that fitted my needs, so I have no issues rolling my own.
> Forms processing?
Not sure whats the need here. Do you mean validating the inputs? Again thats just a few lines of code.
> Templating?
ECR Templating in stdlib works well.
> ORM? I do not use ORMs as I prefer to write my sql queries by hand. Crystal provides object mapping with query results by default.
> Assets pipeline integration?
Not very sure what you mean here.
Overall, I personally feel that I can get all that i need for my app in about a couple of dozen lines of code and I don't really need the emntal overhead of learning a new framework. But I suppose others will have a different view point.
Here are some of my repos which can give an idea of how I do things in crystal; https://github.com/rishavs/kaipi https://github.com/rishavs/cove
With frameworks esp the ones like RoR, the Convention over Configuration (CoC) consideration trumps all the purported benefits that may arise from building your own framework from scratch.
You just learn the fundamentals of one of the most robust and well-established frameworks once, and forget about all the fluff and cruft for good, and just focus on building the business logic and satisfying the user's/customer's needs.
The Not Invented There (NIT) anti-pattern is one hell of a drug!
It hurts my productivity so bad I have to split the code base to multi independent services, each one use a simple server to serve some part of the system. After this those frameworks just cease to being helpful.