De unde a pornit totul
Dacă lucrezi cu Laravel și ai queued jobs, știi problema: în dezvoltare ai Telescope care îți arată tot ce se întâmplă. În producție, activitatea queue-ului e învăluită în mister. Când un job eșuează, investigația începe cu SSH pe server, artisan commands și multă răbdare.
Queuewatch a pornit din exact această frustrare. Nu exista un tool care să-ți arate clar, în timp real, ce se întâmplă cu queued jobs, fără să te conectezi pe server.
Pasul 1: Package-ul open-source
Primul lucru pe care l-am construit a fost un package Laravel open-source, disponibil pe GitHub. Practic, o extensie pentru comanda php artisan queue care aduce filtre avansate și diagnostice direct în terminal.
Ce face package-ul
Comanda queue:failed îți arată job-urile eșuate sub formă de tabel sau output JSON (cu flag-ul --json). Puterea reală vine din filtrele avansate:
- Filtrare după numele queue-ului
- Filtrare după conexiune (Redis, SQS, database)
- Filtrare după interval de timp (
--after=yesterday --before=today) - Filtrare după clasa job-ului (
--class=SendEmail) - Combinarea tuturor filtrelor într-un singur query
- Output ca tabel sau JSON pentru scripting
Exemplu output JSON:
{
"failed_jobs": [
{
"id": "1234",
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"connection": "redis",
"queue": "emails",
"payload": {
"displayName": "App\\Jobs\\SendEmail",
"job": "Illuminate\\Queue\\CallQueuedHandler@call",
"data": {}
},
"exception": "Connection timeout...",
"failed_at": "2025-11-21 10:30:00"
}
],
"count": 1
}Scopul: când primești o eroare în Sentry sau alt error tracking, să poți identifica rapid cauza, direct de pe server, fără să te pierzi prin log-uri.
Pasul 2: De la CLI la SaaS
Package-ul a funcționat perfect pentru diagnostice manuale. Dar au apărut nevoi pe care un tool CLI nu le poate acoperi: alerte automate când un job eșuează, posibilitatea de a ignora job-uri eșuate non-critice despre care știi deja, repunerea unui queued job fără SSH, o privire de ansamblu asupra mai multor aplicații simultan.
Așa s-a născut Queuewatch ca produs SaaS: o interfață grafică modernă care te ține la curent cu tot ce se întâmplă în queue-urile tale. Este ca Sentry, dar exclusiv pentru queued jobs.
Ce am construit
Am livrat trei componente: aplicația SaaS (dashboard-ul principal cu billing, management echipă, alerte), package-ul Laravel open-source (pentru integrare cu orice aplicație Laravel existentă) și site-ul web (landing page, documentație, blog).
Dashboard-ul
Interfață dark-first construită cu React 19 și Inertia.js, pe principiul "signal over noise". Pe pagina principală vezi: total failures, job-uri nerezolvate, resolution rate, timp mediu de rezolvare. Grafice de tendințe construite cu Recharts pe intervalul selectat. Lista de eșecuri recente cu status workflow: new, acknowledged, resolved, retried. Assignment pe membri de echipă. Totul în timp real prin Laravel Reverb (WebSockets).
Când un job eșuează, eroarea apare instant pe dashboard și o notificare este trimisă pe canalele configurate. Fără delay, fără polling. O vezi în momentul în care se întâmplă.
Alerte și notificări
Configurezi reguli per proiect: alertează-mă când un job eșuează, ignoră job-urile din queue-ul "low-priority", trimite notificarea pe Slack, Discord, email sau webhook. Latența alertelor: sub 50ms de la momentul eșecului.
Incident assignment
Când apare o eroare, cineva din echipă trebuie să se ocupe de ea. Queuewatch permite atribuirea incidentelor direct din dashboard către membrii echipei. Nu mai e nevoie de "cine se uită la asta?" pe Slack. Persoana asignată primește notificare, eroarea e urmărită, iar când e rezolvată vezi cine a reparat-o și când.
Multi-app support
Un singur cont Queuewatch poate monitoriza mai multe aplicații Laravel simultan. Fiecare aplicație are propriul proiect cu API key dedicat, propriile reguli de alertare, environments configurabile (production, staging) și echipă asociată.
Billing și subscriptions
Sistem de billing team-based integrat cu Stripe prin Laravel Cashier. Planuri cu limite diferite pe features, management complet din dashboard fără a părăsi aplicația.
Ce diferențiază Queuewatch
Pe piață există Nightwatch, Pulse și alte soluții care includ și monitorizare queue ca feature secundar. Diferența fundamentală: acele produse sunt focusate pe performanța generală a aplicației (request times, queries, memory) și oferă support pentru queue-uri doar la nivel superficial.
Queuewatch e focusat 100% pe queued jobs. Asta înseamnă filtre mai granulare, alerte mai precise, un dashboard construit exclusiv pentru acest use-case, retry via webhook fără SSH, assignment pe echipă, resolution notes și integrări mai profunde cu sistemul de cozi Laravel. Nu încercăm să facem totul, facem un singur lucru bine.
Stack tehnic
Backend: Laravel 12, PHP 8.3, MySQL, Redis pentru caching/sessions, Laravel Reverb pentru WebSockets (real-time updates pe dashboard).
Frontend: React 19 cu TypeScript, Inertia.js v2 (server-driven SPA), Tailwind CSS v4, Radix UI + Headless UI pentru componente, Recharts pentru vizualizări, React Compiler pentru optimizare automată a performanței.
Servicii: Stripe (billing), Resend (email tranzacțional), Sentry (error tracking), Filament v4 (admin panel intern).
DevOps: Vite 7 pentru build, Pest pentru teste, Laravel Pint pentru linting, deployment cu zero-downtime.
Rezultate
Alertele ajung la developer în sub 50ms de la momentul eșecului. Uptime-ul platformei se menține la 99.99%. Produsul a fost lansat în 6 săptămâni de la primul wireframe. Package-ul open-source are integrare directă cu orice aplicație Laravel existentă, fără modificări de cod, doar instalare și configurare.


