mb2100
mb2100 on Hacker News
There are JS libs (like Reactive Mastro [1]) that go well with writing otherwise vanilla HTML/CSS/JS, and there are libs (like React) where you're quickly sinking into a mud of abstractions and have to fight the reactivity runtime when you try to write vanilla JS.
[1]: https://mastrojs.github.io/reactive/
That's weird, considering the guy who put the fetchable.org website up works at Netlify.
Not quite. Perhaps you were thinking of "ethnic cleansing" ?
Is understanding Dutch (reading and listening) good enough?
They're not experienced with git, but still use the command-line?
Interesting. Or would you think a jj GUI would help them?
2. You must have never written Haskell.
No dependencies. No build step. Just a simple web framework. Implemented in just ~800 lines of TypeScript.
https://mastrojs.github.io
Some people even like stinky!
This. Cannot believe it too so long for somebody to finally mention progressive enhancement.
> Backend and UI communication goes through in-process channels, not socket-based IPC
Are they running the frontend and backend in the same process? Sounds a bit dangerous security-wise?
This. "No loading animations" works if you rely on the browser's loading indicators that all users will be familiar with.
@OP, if you're up for a rewrite of the frontend, happy to help you get started with https://mastrojs.github.io
the achilles heel of SPAs everywhere.
right? or give me GitHub issues before the React rewrite – at least they loaded fast...
What AI is doing to the jobs of programmers feels very familiar to a lot of us frontend developers – because it has happened to us before.
Yeah, while you certainly can write semantic HTML with Tailwind, it absolutely doesn't encourage it. It's funny how Tailwind is conceptually going back to inline styles.
But sure, if you have <Title>, <Header> and <Button> components etc. instead of using HTML elements <h1>, <header>, <button> etc. directly, then why not stuff the CSS into the components as well? It all depends on whether you prefer to use components, HTML elements or a combination as your favourite abstraction.[0]
[0]: https://mastrojs.github.io/blog/2025-11-27-why-not-just-use-...
That's because Apache is basically what today's JS crowd would call a "file-based router", and then the app implements the actual routing in that index.php file. Just like early SPA stored the route in a hash. It's funny how history repeats itself.
I've gone back and forth on file-based vs programmatic routing. But each has pros and cons, so in the end I implemented both in Mastro:
https://mastrojs.github.io/docs/routing/
Agree that TypeScript is nice, especially for sharing templates and types between server and client. But you can still use TypeScript on the server without sending it all to the client, and without a complex and insecure protocol like RSC. I’m working on making this as simple and dependency-free as possible:
https://mastrojs.github.io
Posted by
mb2100 on Wednesday March 18, 2026 @10:53AM
from the dbushell.com dept.
Yeah, for that a git-based CMS like Sveltia is really nice.
And for people that actually want to learn a bit of HTML, CSS and JavaScript, Mastro JS is as simple a static site generator as I could make it.
if you're not using CSS modules, why would you import the css file into your javascript?
But anyway, I think we agree. Feel free to read the linked blog post ;-)
button, .button { /* my button styles */ }
In Unix, everything is a file. In Mastro, everything is an HTTP route. You use the standards-based Request/Response-API not only for writing your server, but also for static site and asset generation. And it's beautiful.
Tell me you're nostalgic for Win95 without telling me...