Skip to content
PRSINDIA

Laravel 12 · Octane · Horizon · Filament

Laravel Development

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.

  • p95 under 40ms with Octane
  • Horizon-supervised queues
  • Filament admin from day one
  • 85%+ test coverage on core paths
Why Laravel

The boring framework that keeps shipping.

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 engineer
0ms
p95 API latency

On Octane with FrankenPHP, measured in production on an I/O-bound API, not in a benchmark.

0x
Throughput on Octane

Typical improvement over PHP-FPM once the application is disciplined about resident state.

0M
Jobs per day

Horizon-supervised, on the busiest queue we currently operate. Idempotent, replayable, dead-lettered.

0%
Test coverage

On core business paths, with Pest. Feature tests that hit the database, not mocks agreeing with themselves.

How we actually build it

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.

Octane, and when it is a trap

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.

Queues are where the application actually lives

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.

Filament for the back office, and it is not a compromise

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.

The rest of the discipline

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.

The honest part

When Laravel is the right call — and when it is not.

  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.
What we build

Laravel work we take on.

ERP and internal platforms

Inventory, procurement, approvals, GST-aware invoicing, and the reporting layer the finance team stops exporting to Excel for.

CRM and sales systems

Lead routing, pipeline, activity capture, quota and commission logic that survives contact with an actual sales director.

APIs for mobile and partners

Versioned REST APIs with Sanctum or Passport, rate limiting, idempotency keys, and OpenAPI docs that are generated, not written.

Filament admin panels

A real back office over your existing models — permissions, bulk actions, exports, audit log. Days of work, not a sprint.

Octane and queue performance

Profiling, N+1 elimination, index work, then Octane and isolated Horizon worker pools. Usually cheaper than the rewrite you were quoted.

Legacy PHP rescue

CodeIgniter, Yii, or a 2014 Laravel that never upgraded. Strangled route by route into a modern codebase, shipping the whole way.

Migration path

From straining monolith to queued workers.

What we do when a Laravel application is slow and somebody has already been quoted for microservices.

  1. 01

    Measure before touching anything

    Week 1

    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.

  2. 02

    Fix the database first

    Weeks 1–2

    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.

  3. 03

    Get third parties out of the request

    Weeks 2–4

    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.

  4. 04

    Isolate the worker pools

    Week 4

    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.

  5. 05

    Then, and only then, consider Octane

    Week 5

    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.

Characteristics

Performance and cost, with numbers.

  • p95 under 40ms on Octane

    FrankenPHP workers keep the application resident. Framework bootstrap stops being a per-request cost, which is where most of the win comes from.

  • Runs on modest hardware

    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.

  • Queues that survive a bad day

    Idempotent jobs, exponential backoff, dead-letter table with a replay screen an operator can use without a developer or a terminal.

  • Auth and permissions that hold up

    Sanctum or Passport, policy-based authorisation, and role scoping that is enforced in the model layer rather than remembered in the controller.

  • Observability from day one

    Pulse in production, Sentry on exceptions, alarms on queue depth and age. You should never learn about an outage from a customer.

  • Reversible deploys

    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.

The stack

What ships with a Laravel build from us.

Laravel 12
PHP 8.4
Octane + FrankenPHP
Horizon

Slow Laravel app? Bring it to us before you approve the rewrite.

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

The questions you were going to ask on the call.

PHP 8.4 with JIT is a fast, strictly-typed, well-tooled language, and Laravel is the most productive full-stack framework we have used. The question is never "is PHP serious", it is "what does this system actually do". For a transactional business application — orders, payments, inventory, workflow, reporting, an admin panel — Laravel will get you to production sooner and cheaper than a bespoke Node or Go stack, and it will still be legible to whoever inherits it. For a real-time system holding a hundred thousand concurrent sockets, we would not use it, and we would tell you so.

When the application is I/O bound, already free of obvious N+1 problems, and disciplined about static and container state. Then Octane typically gives us three to five times the request throughput and drops p95 latency under 40ms, because framework bootstrap stops happening on every request. We do not enable it to rescue a slow application: a resident worker will happily preserve leaked state between requests, which turns a performance problem into a data-leakage problem. Profile first, fix the queries, then boot Octane.

It handles the scale most businesses actually have. We run Laravel systems doing millions of requests a day: stateless app containers behind a load balancer, Redis for cache and sessions, a read-replica for reporting queries, and Horizon workers on their own machines so a backlog of PDF generation cannot slow down checkout. The ceiling in practice is almost never PHP — it is the database, and it would have been the database in any language.

Livewire when the interface is essentially server-rendered with islands of interactivity: dashboards, CRUD, admin, forms with conditional logic. It keeps one language, one mental model and one deploy. Inertia with Vue or React when the interface is genuinely application-like — drag and drop, optimistic updates, complex client state — and you want a real frontend framework without hand-writing an API tier. If the product also needs a public marketing site that must rank, we will often pair a Laravel API with a Next.js front end instead.

Almost always, and a rewrite is usually the wrong instinct. The failure is rarely the monolith; it is that everything runs inline in the HTTP request. We profile, fix the N+1 queries and missing indexes, then move every slow or third-party-dependent operation onto Horizon-supervised queues with isolated worker pools. Reporting goes to a read replica. Hot reads get a cache with real invalidation. Most "we need microservices" conversations end at that point, having cost a fraction of a rewrite and carrying none of its risk.

A focused internal tool or workflow system is typically 8 to 12 weeks from around ₹8,50,000. A full platform — multi-role, payments, integrations, a real admin, an API for a mobile client — is 16 to 28 weeks and starts around ₹22,00,000. The variable that moves the number is integrations: every upstream system you do not control is a risk with a schedule attached, which is why we audit them in a paid discovery sprint before quoting.

Proof

Shipped, measured, still running.

All case studies

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 it

Swasthya Sarathi

A healthcare-companion platform for Swasthya Sarathi

A multi-service healthcare platform that helps people find hospitals, doctors, labs, medical stores,...

Read it

MV Tech Education

A course and admissions platform for MV Tech Education

A course-catalogue and admissions website for a Bihar vocational institute — leading with industrial...

Read it

Let's talk laravel development

Bring us the hard version of the problem.

A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.