All posts
Stack choices · 2026-07-18 · 6 min read

PHP 8.4 vs. Node vs. Django
for a line-of-business app in 2026.

Every year we get asked, "what should we build our internal tool in?" Here's an honest answer from a shop that has shipped in all three — the actual trade-offs, not the Twitter version.

First: this post is about line-of-business apps. ATS, HRIS, ERP, CRM, admin panels, order-to-cash portals. Not gaming servers, not video-streaming, not high-throughput realtime. If you're building the wrong kind of app for the stack, you'll fight it forever.

PHP 8.4 (Laravel or plain)

Modern PHP is very different from the PHP you tried in 2009. Native types, enums, readonly properties, first-class callable syntax, JIT compilation, and Composer as a real dependency manager. Add Laravel 11 / 13 and you have a batteries-included framework that isn't behind Rails or Django on any dimension worth caring about.

Where PHP wins:

Where PHP loses:

Use PHP when: the app is 90% CRUD, you want low ops cost, and you want the fastest possible admin panel out of the box.

Node.js (Next.js, NestJS, or Express)

Node is the default answer in 2026 for anything that looks like a "product". Universal language across frontend and backend, huge ecosystem, native async, streaming everywhere. Next.js in particular is the closest thing we have to a lingua franca for modern web apps.

Where Node wins:

Where Node loses:

Use Node when: the app has a rich interactive frontend, needs realtime, or you want to hire from the huge JS pool.

Django (Python)

Django is what you pick when data + ML is central to the product and you want a batteries-included framework to hold everything together. Django Admin remains one of the greatest gifts to internal-tool development anyone has ever given us.

Where Django wins:

Where Django loses:

Use Django when: data or ML is core to the product, or when Django Admin will genuinely save 6+ weeks of custom admin work.

What we actually pick, most of the time

Our default for a mid-sized bespoke line-of-business app in 2026 is PHP 8.4 + Laravel + Livewire (or plain PHP + Tailwind for very small teams). Not because it's fashionable — it isn't — but because on the three axes that matter most for our clients (deploy cost, hiring pool, admin-tool speed), it wins.

Where we deviate:

The uncomfortable truth

Most stack debates are theatrics. If you have senior engineers, they can ship a good product in any of these three. If you have junior engineers, none of them will save you. Pick the stack your team knows well, or hire people who know the stack you want to pick.

What we tell our clients: don't optimise for the stack. Optimise for shipping. Then, once shipped, optimise for the parts that hurt. That's it.

If you're staring at a stack decision for a real project, book a call — we'll tell you the honest answer for your case, even if it's "pick the one your team already knows".