NM Company
A portfolio and enquiry site for events firm NM Company
A visual portfolio and enquiry website for an event management and supplies firm — presenting a full...
Read itLaravel 12 · Octane · Horizon · Filament
The framework we have shipped more business systems on than any other. Laravel 12 with Octane for throughput, Horizon for queues that survive a bad day, and Filament for a back office your operations team will actually use.
Laravel is not exciting, and that is the entire argument for it. A queue system that works. An ORM that does not fight you. A migration story that survives four years of schema churn. An admin panel you get for free instead of budgeting three days for and regretting for five years. We reach for Laravel when the system is transactional and the domain is complicated — orders, payments, inventory, approvals, reconciliation, reporting. That is most business software. The framework has an answer for nearly every problem such a system will hit, and the answer is usually the same one the next Laravel engineer would have reached for, which is what makes the codebase survive the team that wrote it.
Talk to a Laravel engineerOn Octane with FrankenPHP, measured in production on an I/O-bound API, not in a benchmark.
Typical improvement over PHP-FPM once the application is disciplined about resident state.
Horizon-supervised, on the busiest queue we currently operate. Idempotent, replayable, dead-lettered.
On core business paths, with Pest. Feature tests that hit the database, not mocks agreeing with themselves.
Laravel is the framework we have shipped more production systems on than any other, and the reason is unglamorous: a competent team can build a correct, well-tested, maintainable business application in it faster than in anything else, and the person who inherits it in three years will recognise what they are looking at.
Laravel Octane boots the application once and keeps it resident, serving requests from a long-lived worker under FrankenPHP or Swoole. On an I/O-bound API we routinely see request throughput improve by a factor of three to five and p95 latency drop below 40 ms, because you are no longer paying for framework bootstrap on every single request.
The trap is that a resident worker changes the rules. Static properties persist between requests. Singletons hold state you did not mean to keep. A container binding that captured the first request's user will happily serve that user's data to the next person. Octane is a performance tool for a codebase that is already disciplined about state; it is not a fix for a slow application, and we will not switch it on to paper over N+1 queries. We find those first, with Telescope and Pulse, and fix them.
Anything that talks to a system we do not control goes on a queue. Payment webhooks, GST filings, carrier APIs, invoice PDFs, e-way bill generation, notification fan-out — all of it is a job, backed by Redis, supervised by Horizon, on a named queue with its own worker pool so a slow third party cannot starve your checkout. Jobs are idempotent, because a queue will deliver twice eventually and that day should be uneventful. Failures land in a dead-letter table with the full payload, and there is a screen where an operator can inspect and replay one without a developer opening a terminal.
This is the single largest architectural difference between a Laravel application that survives its first Diwali sale and one that does not.
Nearly every business application needs an internal admin, and it is nearly always the thing that gets three days at the end of the project and is hated for the next five years. We build it in Filament instead: resources over the same Eloquent models, real role and permission scoping, bulk actions, exports, audit trails, custom pages where a table is the wrong answer. Your operations team gets a tool they can actually work in on day one, and your engineers stop being a human CRUD interface for anyone who needs a record changed.
Pest for tests, with feature tests that exercise the HTTP layer and the database rather than mocking everything into meaninglessness. Migrations always reversible. Sanctum for API tokens, Passport when a real OAuth server is genuinely required. Scout with Meilisearch or Typesense when search matters. Telescope in staging, Pulse in production. Every deploy behind a health check with a one-command rollback, because the important question about a release is not whether it will fail but how fast you can undo it.
| Choose Laravel | Choose something else | |
|---|---|---|
| Transactional business system | Yes, and it is not close. Orders, payments, inventory, approvals, reporting — Laravel has a mature answer for every part of it. | Nothing we would recommend over it for this shape of problem at this budget. |
| 100k concurrent WebSocket connections | No. PHP holds a process per connection; this is the wrong tool and no amount of tuning fixes that. | Node.js or Go for the socket tier. Keep Laravel for the business logic behind it and let the two talk over Redis. |
| CPU-bound ML or heavy data processing | No. You will be fighting the language, and you will lose to a library that already exists elsewhere. | Python. Run it as a separate service and have Laravel call it over a queue. This is a boring, reliable pattern. |
| Public site that must rank hard | Blade renders fine HTML and ranks perfectly well. For most sites this is a complete answer. | If the marketing surface is strategically central, a Next.js front end on a Laravel API gives you a better toolchain for it. |
| Your team is JavaScript-only | Consider it anyway — Laravel plus Inertia keeps React on the front and the learning curve is a fortnight, not a quarter. | If the team genuinely will not maintain PHP, NestJS on Node is the closest thing to Laravel discipline in that ecosystem. |
| You need an admin panel in a week | Filament. Resources over your existing models, real permissions, bulk actions, audit trail. Days, not sprints. | There is no better answer in any ecosystem we work in. This is Laravel at its most unfairly productive. |
Inventory, procurement, approvals, GST-aware invoicing, and the reporting layer the finance team stops exporting to Excel for.
Lead routing, pipeline, activity capture, quota and commission logic that survives contact with an actual sales director.
Versioned REST APIs with Sanctum or Passport, rate limiting, idempotency keys, and OpenAPI docs that are generated, not written.
A real back office over your existing models — permissions, bulk actions, exports, audit log. Days of work, not a sprint.
Profiling, N+1 elimination, index work, then Octane and isolated Horizon worker pools. Usually cheaper than the rewrite you were quoted.
CodeIgniter, Yii, or a 2014 Laravel that never upgraded. Strangled route by route into a modern codebase, shipping the whole way.
What we do when a Laravel application is slow and somebody has already been quoted for microservices.
Telescope and Pulse in staging against production-shaped data. The slowest endpoint is almost never the one the team suspects, and the fix is almost always an N+1 query or a missing index rather than an architecture.
Eager loading, composite indexes, and moving reporting queries onto a read replica. This alone routinely takes p95 down by 60 to 80 percent, and it costs a fraction of anything else on this list.
Every call to a system you do not control becomes a queued job — payment webhooks, carrier APIs, GST filings, PDFs, notification fan-out. Jobs are idempotent, retried with backoff, and dead-lettered with a replay screen.
Horizon with named queues and separate worker pools, so a backlog of invoice PDFs cannot starve checkout. Each pool gets its own alarm on depth and age, so you find out before your customers do.
With the state discipline verified and the queries fixed, Octane on FrankenPHP is a three-to-five times throughput win for the cost of a config change and a careful audit of static properties and singletons.
FrankenPHP workers keep the application resident. Framework bootstrap stops being a per-request cost, which is where most of the win comes from.
A stateless container behind a load balancer, Redis for cache and sessions. Most systems we run cost between ₹8,000 and ₹40,000 a month to host.
Idempotent jobs, exponential backoff, dead-letter table with a replay screen an operator can use without a developer or a terminal.
Sanctum or Passport, policy-based authorisation, and role scoping that is enforced in the model layer rather than remembered in the controller.
Pulse in production, Sentry on exceptions, alarms on queue depth and age. You should never learn about an outage from a customer.
Zero-downtime releases behind a health check, migrations always reversible, one-command rollback. The question is not whether a release fails but how fast you undo it.
A Shopify storefront for a Surat ethnic-wear label — 200+ SKUs of lehengas, sarees and suits organised by type, colour,...
A fleet, ePOD and route-optimisation platform built offline-first for drivers in low-connectivity corridors — because th...
A Shopify storefront for a Surat watch and eyewear retailer — browsable by gender, brand, style and combo, with predicti...
Most systems we are asked to rebuild do not need rebuilding. They need the queries fixed, the third parties moved onto queues and the workers isolated. We will tell you honestly which one you are.
FAQ
Proof
NM Company
A visual portfolio and enquiry website for an event management and supplies firm — presenting a full...
Read itSwasthya Sarathi
A multi-service healthcare platform that helps people find hospitals, doctors, labs, medical stores,...
Read itMV Tech Education
A course-catalogue and admissions website for a Bihar vocational institute — leading with industrial...
Read itReact that renders on the server, ranks in Google and does not ship 300 KB of JavaScript t...
ExploreOne codebase, both stores, and a release you can fix the same afternoon. We build React Na...
ExploreNode is the right answer for real-time tiers, streaming and high-concurrency I/O — and the...
ExploreLet's talk laravel development
A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.