@php $registry = app(\App\Services\Tools\ToolRegistry::class); $haystackFor = fn ($item): string => strtolower(implode(' ', [ $item->name, $item->summary, implode(' ', $item->keywords), implode(' ', $item->accepts), ])); $allHaystacks = $grouped->flatten()->map($haystackFor)->values(); @endphp

Every tool in one place

{{ $total }} tools across {{ $categories->count() }} categories. Filter below or jump straight to a category.

{{-- Client-side filter over the rendered grid: instant, no requests. --}}
{{-- Category jump links --}}
@foreach ($categories as $category) {{ $category->name }} {{ $category->toolCount }} @endforeach
@foreach ($grouped as $categorySlug => $tools) @php $category = $registry->category($categorySlug); // Pre-computed search text per tool, reused for both the // card filter and the section's own visibility. $haystacks = $tools->map($haystackFor)->values(); @endphp @continue($category === null)

{{ $category->name }}

{{ $category->tagline }}

Category page
@foreach ($tools as $tool) @endforeach
@endforeach

No tool matches “”. Try a file extension such as or .