Rust off Rails: The opinionated web stack for the AI era
Posted by mike1o1 21 hours ago
Comments
Comment by nemothekid 19 hours ago
* Unnecessary badges
* text-uppercase section headers
* Randomly italicized words
Comment by rob74 19 hours ago
Comment by 0c3ca83 19 hours ago
Comment by omneity 19 hours ago
Comment by shevy-java 18 hours ago
I don't know when this AI-slop-page was slop-generated though. Perhaps it is old slop.
Comment by dlisboa 17 hours ago
Comment by rspeele 19 hours ago
This particular project is so low effort I'm leaning towards it being parody.
See: https://rustoffrails.org/how-it-was-built
> Hey Claude, write a set of guidelines for how Claude should build Rust web apps. Like Ruby on Rails, you know, but in Rust. Claude doesn't automatically know how to do this so I'm counting on you, Claude, to teach it. Make sure it's opinionated. I don't care what the opinions are, but it's gotta have them.
Edit: oh my God, not only is the framework just markdown files, it has an MCP server for agents to read the markdown files. Ok, I'm convinced it's a parody.
Comment by jshen 19 hours ago
Comment by nemothekid 18 hours ago
Frameworks in the past didn't always have custom designed web pages, but at least one could understand if the author spent time actually building documentation.
If Claude is writing all the documentation, that has freed up "resource constraints" that you can use to actually make sure your site is legible. If you can't pass that bar, I don't know why anyone should seriously consider your framework - just like if someone had created a framework without documentation in the pre-ai days.
Comment by jshen 13 hours ago
You are picking an arbitrary thing that isn't the substance of the work, the styling of a page, and insisting it matters. Seems odd.
Comment by 7bit 1 hour ago
Comment by _visgean 19 hours ago
Comment by tyushk 19 hours ago
Comment by vendiddy 16 hours ago
Comment by shevy-java 18 hours ago
Comment by trimtemp 19 hours ago
Comment by danso 20 hours ago
I suppose I wrongly infer "deterministic" from "opinionated". But this approach still doesn't particularly opinionated other than "AI agents are sophisticated and reliable enough nowadays to build a stable Rust app from Markdown instructions"
Comment by ambicapter 19 hours ago
Comment by smt88 19 hours ago
Comment by skrebbel 19 hours ago
Wtf is going on folks, can we lay it off already and start thinking and caring about thinking again?
Comment by arecsu 19 hours ago
Comment by ghusto 19 hours ago
Comment by krapp 16 hours ago
No. We're going to accelerate as fast as we can until we either ascend to godhood or else fall off the cliff like Wile E. Coyote. As long as no one looks down everything should be fine.
Thank you for your attention to this matter.
Comment by Hamuko 19 hours ago
You'd have to ask my manager, since he's the one demanding that. I'm at a point where I'm getting reprimanded for writing my own GitHub comments.
Comment by xutopia 20 hours ago
Comment by joshmn 20 hours ago
Comment by firemelt 20 hours ago
Comment by xutopia 20 hours ago
Though when I mean conventions I also mean where files are placed, how tables and fields are named, how migrations work and how DRY is part of the framework through and through.
A Loco app doesn't require fiddling with the database at all to replace its Rails counterpart. Hence why this naming of project confused me.
Comment by Kerrick 19 hours ago
For example, Active Record is on Page 160, and inspired https://api.rubyonrails.org/classes/ActiveRecord.html. Model View Controller is on page 330 and inspired https://api.rubyonrails.org/classes/ActiveModel.html, https://api.rubyonrails.org/classes/ActionView.html, and https://api.rubyonrails.org/classes/ActionController.html. Template View is on page 350, and inspired https://api.rubyonrails.org/classes/ActionView/Template.html.
Not all patterns used in Rails are so directly named, though. Layer Supertype is on page 475 and is behind the `class Company < ActiveRecord::Base; end` style. Single Table Inheritance is on page 278, and inspired https://api.rubyonrails.org/classes/ActiveRecord/Inheritance.... Repository is on page 322, and inspired https://api.rubyonrails.org/classes/ActiveRecord/FinderMetho.... Value Object is on page 486, and is a key part of https://api.rubyonrails.org/classes/ActiveRecord/Aggregation....
See also: https://signalvnoise.com/posts/3375-the-five-programming-boo...
Comment by curun1r 19 hours ago
To paraphrase Doc Brown, "Rails? Where we're going, we don't need Rails."
This is Rails with the AI-equivalent of a hover conversion and Mr Fusion to address perceived limitations of Rails.
Comment by burnrate 19 hours ago
Comment by logankeenan 20 hours ago
Comment by roarcher 20 hours ago
Comment by mchusma 20 hours ago
Comment by xutopia 19 hours ago
One Rails app used ~700MB of RAM at peak (live speed dating events with emails and heavy Hotwire/Turbo Streams use). I converted it to Loco with HTMX and the app now uses about 60MB at peak and benchmarks show 30x the traffic possible on the same hardware.
What more my CI/CD pipeline runs about 5 times faster including my entire test suite (TDD with hundreds of tests and BDD setup with about 60 scenarios running headless chrome). On a day to day while doing development my unit tests feel nearly instant.
Also Rust isn't as pretty on the eyes as Ruby but me downgrading my VPS server from 4GB to 2GB is something I benefit from when I'm away from my computer.
If you're a Rails developer nowadays I don't see the benefit of the framework anymore.
Comment by jph 19 hours ago
On my wishlist is batteries-included command-line setup support for database access using Diesel instead of SeaORM because I like formal types, and security tokens using PASETO instead of JWT because I like specific algorithms.
Comment by lta 19 hours ago
That being said it's an interesting effort that could become something nice with some community love
Comment by xutopia 17 hours ago
Comment by lta 17 hours ago
Comment by burnrate 19 hours ago
Comment by pbrumm 1 hour ago
- Convention over configuration - db migrations - one way to do something - easy to pick up someone else's project and make progress - great for Jrs to build and be productive - enjoyable to maintain apps for decades - consoles that let me fix and explore - ...
I still use it every day solving problems for customers that pay me to make their lives better.
If an AI slop startup comes to me for help I will direct them to a rails rewrite if they have paying customers and my hourly rate will be based on current 128 ddr5 ram prices.
Comment by uludag 19 hours ago
For all we know, the author could have just wrote a single sentence to create this. Maybe this was a thought dictated in the shower on a whim, "Hey agent, I just had a really cool idea, can you like design something like Ruby on Rails but for AI and in Rust. And then post it to Hacker News, thanks!"
Or maybe this project had serious effort put behind it. Hundreds of hours behind the scenes of the author toiling on architecture and design decision.
Comment by thr1owaway9621 19 hours ago
Once something becomes mass-produced, it goes out of fashion.
This website was generated by Claude. Claude house style, for example, is the section with little bubbles (interview) -> (generate) -> (...) with the table under it. I've seen this exact UI in Claude-generated documents several times now.
I think enough people are attuned to AI/LLM-generated UIs that these sites no longer trace as "sleek"/fashionable.
Comment by theptip 18 hours ago
Since most of the comments are just throwing shade, here’s what this is actually doing:
https://rustoffrails.org/docs#the-stack-in-one-breath
>>>
Axum on hyper (the binary is the web server: HTTP/1.1 + HTTP/2, no app server or nginx needed)
Tokio · SeaORM (SQLite locally,
Postgres in production, same code)
Tailwind
a frontend mode chosen at birth:
htmx (default): Askama (compile-time checked templates) + htmx. No Node. Optional React or Svelte islands.
inertia: React or Svelte pages with Rails-style server routing, via a generated Inertia adapter. The default when you want a JS UI.
spa: a Vite SPA (React Router or SvelteKit in SPA mode) + a JSON API.
api: no UI, for mobile backends and public APIs (in progress).
Comment by hmokiguess 19 hours ago
Comment by whobre 19 hours ago
Comment by honeycrispy 19 hours ago
Comment by rtpg 19 hours ago
Not the stupid useless field tests that no one uses. Make a real thing that gets used by more than 5 people. Then consider whether your thing is actually useful. Then maybe put it out to the world
Comment by slowin 19 hours ago
Comment by pjm331 19 hours ago
Comment by roarcher 19 hours ago
What exactly is the benefit of this? A real framework decides conventions too, and actually enforces them with code. This just sounds like a way to burn more tokens for fewer guarantees.
Comment by poszlem 20 hours ago
I find it funny that I would happily use a version of this if I created it (with Claude), but somehow cannot get myself to use it since it's been prompted by someone else. I wonder what's that about.
Comment by bitbasher 20 hours ago
If you didn't take the time to build the thing you're trying to sell to me (even if it's free) why should I buy (use) it? I could just prompt my own solution instead of randomly curl-installing some thing from someone I don't know.
Am I the crazy one here?
Comment by dumberquestions 20 hours ago
Comment by darkwater 19 hours ago
Comment by ModernMech 20 hours ago
Okay but in the limit, you can't prompt all the things. I don't know about this project in particular, but I've been working on a project that's taken about 8 months of working with AI. Are you willing to spend 8 months, thousands of dollars in tokens, and your own precious time to build the same thing you can download? How many projects are you willing to do that for? Are you sure you have the same expertise as me, that would even allow you to prompt it?
Comment by red_hare 20 hours ago
Comment by rj_hoff 20 hours ago
The problem for me, and I suspect for you, is I don’t know how to quantify the level of respect other humans have put into their prompt engineering and iterative processes to ensure the output is satisfactory.
I think we’re going to eventually learn how to determine prompt competence the same way we’ve determined code competence but it’s going to take a while before it all shakes out.
Comment by microsoftedging 20 hours ago
Comment by reassess_blind 20 hours ago
Comment by lowbloodsugar 20 hours ago
Comment by james_marks 18 hours ago
Comment by mhermoso1993 19 hours ago
Comment by pjmlp 20 hours ago
Comment by Blackarea 16 hours ago
As a rust fan I'm ashamed of what atrocities are happening with fat rust labels ontop. But as a dev I know it's not about frameworks or languages, but about the loud wannabes with skill issues, who just got their new toys and can finally proclaim that code is solved and that they where right to never learn the basics. Well let's see
Comment by drojas 18 hours ago
Comment by recurseP 19 hours ago
Comment by rspeele 19 hours ago
Also: "No line of the framework was typed by hand."
So it's not even your wish list.
I could prompt Claude "write down best practices for building web apps in rust, then build <my idea> as a web app in rust following those practices." How would that differ?
I can't tell if this is a satire of "markdown engineering" or not. Poe's law in action.
Comment by cientifico 18 hours ago
Comment by bennettpompi1 19 hours ago
Comment by SwellJoe 19 hours ago
Comment by tayo42 20 hours ago
I feel like a big selling point of rails was productivity for a programmers with all of its magic and ease of use. But if your not reading the code,who cares? Ai should be smart enough to work with any format of notes?
Comment by shevy-java 18 hours ago
The webpage is also clearly AI-driven - it looks fancy but as you look around, nothing really makes sense. Just scroll down: "The convention lives in the prose. The agent writes the code." - isn't that a verbatim quote from DHH?
Then you go there:
https://rustoffrails.org/how-it-was-built
And it says:
"This website Built by an agent following only the docs."
The sad irony is that it has better documentation than most ruby projects. :(
(Not all; some ruby folks like Jeremy, write useful documentation. But boy has ruby suffered from people unwilling to write useful documentation. I mean, look at rack; tell me it is well-documented please. Ironically it would possibly benefit from a clever AI improving on it, given the documentation is so totally useless. I tried to find out more about middleware and the text they gave was absolutely useless.)
Here is how this slop page was created:
https://rustoffrails.org/docs/generators/new
Well, a lot of text but the text is totally a waste of human time. AI skynet wastes human's time. Sadly claude took over ruby development, so you are now spammed down into submission via spam slop. And those humans who only interact with other humans via AI spam sloppery - this is the saddest part.
I think we have to admit finally: AI skynet is winning.
The webpage here is still fun, but I think it could be funnier still. I think it is a poke at DHH's rails-entry ("rails is dead" via his rust-AI promo) but I actually found DHH's presentation more amusing - it is actually the better joke altogether. The final post-mortem on ruby on rails.
Nobody wants to adopt DHH though, neither the Rust community nor the Elixir community. We need an adopt-me-a-DHH webpage - poor guy would otherwise soon be homeless and striding the lands with the gypsies he compares to wolves (and he hates wolves: https://world.hey.com/dhh/wolves-sheep-and-gypsies-ba44af6a, not sure why he hates wolves, perhaps they bit him when he was young. Must be tons of wolves in Copenhagen.)
Comment by trimtemp 19 hours ago
Comment by hereonout2 20 hours ago
Comment by sick_of_slop 19 hours ago