Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Goatcounter Laravel Package

jeffersongoncalves/filament-goatcounter

A Filament plugin that brings GoatCounter analytics into your admin panel, adding widgets and pages to view site traffic, page views, referrers, and other visitor statistics without leaving your dashboard.

View on GitHub
Deep Wiki
Context7

Getting Started

This package adds an analytics dashboard (settings page) to a Filament panel via a plugin object. Minimum steps:

  1. composer require the package alongside filament-analytics-core 3.1+ if you intend to use navigation grouping — the navigationGroup() API depends on core 3.1.
  2. Register the plugin on your panel provider:
    ->plugin(Plugin::make())
    
  3. Open the panel — the analytics page appears in the translated default navigation group.

First use case: drop the plugin into the panel, confirm the page renders with your existing auth/permissions, then decide whether to override the navigation group to match your panel's IA (e.g. "Reporting" / "Insights"). Start with the default group and only override once you know where it belongs in your menu.

Implementation Patterns

Default grouping (do nothing). Leaving navigationGroup() unset preserves the translated group shipped with the package — best for single-locale apps or when you want the package's opinion.

Static group name. Align the page with an existing panel group:

Plugin::make()->navigationGroup('Reporting')

Use this when your panel already standardises on string groups across resources/pages.

Closure-based group. Use a closure when the group depends on runtime context (tenant, user role, feature flag):

Plugin::make()->navigationGroup(fn () => filament()->getCurrentPanel()->getId() === 'admin'
    ? 'Administration'
    : 'Insights')

Keep the closure cheap — it is evaluated during navigation building on every panel render.

Consistency pattern. Define group names as constants or an enum shared between the plugin registration and your resources so navigation labels never drift:

enum NavGroup: string { case Reporting = 'Reporting'; }
// ...
Plugin::make()->navigationGroup(NavGroup::Reporting->value)

Multi-panel setups. Register the plugin once per panel with a panel-appropriate group, rather than trying to make one registration serve every panel.

Gotchas and Tips

  • Version coupling is real. navigationGroup() only exists with filament-analytics-core 3.1+. On older core the method is missing — you'll get a BadMethodCallException at boot, not a silent fallback. Pin the core version in composer.json if you rely on grouping.
  • Null/empty string semantics. Passing '' is not the same as omitting the call. If you want the translated default, don't call navigationGroup() at all; don't pass an empty value expecting a reset.
  • Closures run often. Navigation is built on many requests; avoid DB queries, container resolution of heavy services, or auth()->user() lookups inside the closure unless cached.
  • Ordering isn't grouping. This only changes the group; sort order within the group still comes from the page's own navigation sort. If the page lands oddly, check navigationSort rather than the group.
  • Translation mismatch. Custom group strings bypass the package's translations — if you're shipping a multilingual panel, put your group label through __() yourself.
  • Debugging. If the page doesn't move, clear the Filament cached components/navigation (php artisan filament:optimize-clear or optimize:clear) and re-check that the plugin is registered on the panel actually being rendered.
  • Extension point. The plugin object is the intended configuration surface — prefer chaining on Plugin::make() over subclassing or touching core package config, so upgrades stay painless.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log