@extends('trace-replay::layout') @section('title', 'Dashboard — TraceReplay') @section('content')

TraceReplay

Real-time application tracing & debugging

Unique Features

HTTP Replay
JSON Diff
AI Fix Prompts
PII Masking
Livewire Tracing
Multi-Tenant
W3C Traceparent
Octane Ready
{{ number_format($stats['total']) }}
Total Traces
{{ number_format($stats['success']) }}
Successful
{{ number_format($stats['errors']) }}
Errors ({{ $stats['error_rate'] }}%)
{{ number_format($stats['avg_duration'], 0) }}ms
Avg Duration
{{ number_format($stats['last_hour']) }}
Last Hour

Last 7 Days Activity

Success Errors

Operations (7 days)

@php $ops = $stats['operations'] ?? []; $opsMeta = [ 'db_queries' => ['label' => 'DB Queries', 'icon' => 'database', 'color' => 'blue'], 'cache_calls' => ['label' => 'Cache Calls', 'icon' => 'hard-drive', 'color' => 'green'], 'http_calls' => ['label' => 'HTTP Calls', 'icon' => 'globe', 'color' => 'purple'], 'mail_calls' => ['label' => 'Mail Sent', 'icon' => 'mail', 'color' => 'orange'], ]; $maxOps = max(1, max($ops['db_queries'] ?? 0, $ops['cache_calls'] ?? 0, $ops['http_calls'] ?? 0, $ops['mail_calls'] ?? 0)); @endphp
@foreach($opsMeta as $key => $meta) @php $count = $ops[$key] ?? 0; $pct = $maxOps > 0 ? round(($count / $maxOps) * 100) : 0; @endphp
{{ $meta['label'] }} {{ number_format($count) }}
@endforeach @if(array_sum($ops) === 0)
No operations recorded yet
@endif

Recent Traces

@php $dateRange = request('date_range'); $hasDateRange = request()->has('date_range'); // Default to 'today' when no parameter is present $effectiveDateRange = $hasDateRange ? $dateRange : 'today'; @endphp @if(request()->hasAny(['search','status','type','date_range'])) ✕ Clear @endif
@forelse ($traces as $trace) @php $type = $trace->type ?? 'http'; $typeIcons = ['http' => 'globe', 'job' => 'cpu', 'command' => 'terminal', 'schedule' => 'clock']; $typeColors = ['http' => 'brand', 'job' => 'purple', 'command' => 'orange', 'schedule' => 'cyan']; @endphp @empty @endforelse
Type Status Name Started Duration Actions
@php $s=$trace->status; @endphp @if($s==='success') OK @elseif($s==='error') Error @else ... @endif @php $displayName = $trace->name ?? 'Trace'; $method = null; if ($type === 'http' && str_starts_with($displayName, 'HTTP ')) { $parts = explode(' ', $displayName, 3); $method = $parts[1] ?? null; $displayName = $parts[2] ?? $displayName; } @endphp
@if($method) {{ $method }} @endif {{ \Illuminate\Support\Str::limit($displayName, 40) }} @if($trace->http_status) {{ $trace->http_status }} @endif
{{ substr($trace->id, 0, 8) }} · {{ $trace->steps_count ?? 0 }} steps @if($trace->ip_address) · {{ $trace->ip_address }} @endif
{{ $trace->started_at?->diffForHumans() ?? '—' }}
{{ $trace->started_at?->format('H:i:s') }}
@if($trace->duration_ms) @php $ms = $trace->duration_ms; $c = $ms < 200 ? 'green' : ($ms < 1000 ? 'yellow' : 'red'); @endphp
{{ number_format($ms, 0) }}ms
@else @endif

No traces recorded yet.

Instrument your code with TraceReplay::step() or enable the middleware.

@if ($traces->hasPages())
Showing {{ $traces->firstItem() }}–{{ $traces->lastItem() }} of {{ $traces->total() }} {{ $traces->links() }}
@endif
@endsection