Readit News logoReadit News
Posted by u/vseplet 7 months ago
Show HN: I reinvented PHP in TypeScript (demo)github.com/vseplet/morph...
I built Morph, an experimental fullstack HTML-first library for Deno, Node, and Bun.

Everything returns HTML, not JSON. No React, no Vite — just plain HTML with server-side rendering.

No build steps, no preprocessors, no complex configs — everything runs from a single file.

Perfect for Telegram Web Apps, internal tools, simple admin panels, dashboards, or anywhere a full-blown SPA feels like overkill.

Important: I built this entirely for myself — to solve my own problems. I hate complex frontend. I hate writing it. And I don’t want to waste time on it. But maybe it’ll help you too.

PetahNZ · 7 months ago
I think this misses one of the main selling points of PHP, the shared nothing, single thread, fire and forget methodology that I can throw behind a load balancer and spin up 100 servers.
ChocolateGod · 7 months ago
You can probably use something like https://www.cgi-node.org/ to get close to the PHP model in the JS world.

But, I wouldn't be surprised if its slower than PHP due to the overhead of starting up NodeJS for each request, as PHP has been optimised to have fast start times.

WorldMaker · 7 months ago
This project is suggesting Deno, which has rather different startup characteristics to Node, and tuned for Deno Deploy which is already a "serverless" scale-to-zero/scale-as-many-as-you-need-behind-a-load-balancer deployment host. Deno Deploy is a proprietary solution, of course, but not alone in the growing world of JS-based "serverless" (Netlify, Vercel, Cloudflare Edge, and more).

Deleted Comment

ZYbCRq22HbJ2y7 · 7 months ago
PHP can be multi-threaded, share many things. So can nodejs.
askonomm · 7 months ago
So this is supposed to be following the practices that were common in PHP ten years ago? Modern PHP is not written in such a way where business logic is mixed with templating. For good reason.
bovermyer · 7 months ago
For applications you're right.

For trivial scripts, though, that practice is still pretty common. You don't necessarily need Twig or whatever if you just need a script to spit out the rows from a single database query.

al_borland · 7 months ago
Not everything is a big web app. Applying this separation of concerns to everything, and assuming everything will scale into Facebook, brings a lot of needless complexity into what should be simple little pages. Old PHP was great at that, and still is. I’m continually shocked that it has seemed to be the only game in town for decades. It seems like such an obvious use case. Maybe this is a testament to how well PHP solve this space, despite catching a lot of flack online. Similarly to this project, PHP also started out of the developer’s need to manage his Personal Home Page, not large scale enterprise apps.

So many people talk about missing the old Internet and the virtues of the small web, and breaking free from platforms… then at the same time speak out against the tools that allow a person to start small and dip their toe into the water of web development, without needing to spend several months in a boot camp for a few lines of server side code.

oaiey · 7 months ago
My naive question: so if I have node, express, and JS tagged template literals. Is not that what PHP does. Route some url to a html interpolated with code.

What is the add-on from this library? The only thing I read out of it, is some css and other templating benefits. Which is not the essence of PHP. The essence of PHP is that you mix html and code (which many JS tagged templates support).

This goes more in the direction of component oriented development (e.g. what Blazor does... even Angular). So my rant is about comparing it with PHP.

Not a node & browser dev, but I have my past in PHP and currently some Blazor.

Oxodao · 7 months ago
php has not been "mix html & code" for the last 10 years if you use it properly
ipaddr · 7 months ago
No it's still proper to mix html and php code. You could always use a templating language like smarty 20 years ago so if it wasn't proper 10 years ago it wasn't proper 20 years ago. The truth is <=$variable?> is very readable.
ZYbCRq22HbJ2y7 · 7 months ago
You mean that the general patterns that people implement when using PHP changed. The language hasn't changed in a fundamental way that prevents it from being utilized in this way.
buttocks · 7 months ago
This project is cool but the author seems to have never actually touched PHP that he compares it to.
vseplet · 7 months ago
I studied it a long time ago — maybe it was even taught in college. Yeah, the comparison isn’t entirely accurate, but what I meant was the idea of merging code with its template plus rendering it all server-side right away.
bdcravens · 7 months ago
You should call it NodeFusion
hu3 · 7 months ago
Interesting pattern. This is specially nice to me:

"No build steps, no preprocessors, no complex configs".

I worked on a project recently that followed this and Devs loved it. The DX was amazing.

vseplet · 7 months ago
Thank you, DX was really important for me in this project. I will add some examples and documentation in the near future, it will be cool. But writing README is very difficult for me =(

Well, I am sure that we need to develop the part with api. It already exists and works great, but lacks middlware functions and caching

Deleted Comment

lylejantzi3rd · 7 months ago
A lot of people here are comparing it to PHP, but it looks more like python to me.
gbraad · 7 months ago
The selling point of PHP is the case of deployment on shared gisteren, who either use the pho module with Apache or fpm, or other CGI method. But, as a user, you do not care about this.

Just unpack, set MySQL credentials, and done.