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.
Architecture fit
Plugin::make()), which is the idiomatic Filament v3+ extension pattern. Adding navigationGroup(string|Closure) aligns with how Filament resources and custom pages already accept navigation group configuration, so the API is consistent with the host framework's conventions rather than introducing a parallel configuration mechanism.filament-analytics-core 3.1 establishes a two-package release train (plugin + core). That coupling is the main architectural consideration — the plugin's public API surface now tracks core's minor versions.Integration feasibility
filament-analytics to 3.1.0, ensure filament-analytics-core resolves to >=3.1, and optionally add ->navigationGroup(...) to the existing Plugin::make() chain in the PanelProvider.Closure variant enables dynamic group resolution (e.g., localized labels or conditional grouping) without requiring a new plugin release — useful but also the higher-risk path, since an exception or null returned from the closure surfaces at navigation render time.Technical risk
composer.json constraint is a hard requirement rather than a soft suggestion.Closure support: Filament evaluates navigation configuration during panel boot/render; any I/O or auth check inside the closure could be invoked more often than expected. Also verify behavior under php artisan config:cache / route:cache in production.Key questions
filament-analytics-core >=3.1 a hard Composer constraint, and does it conflict with any currently supported Filament version?navigationGroup() affect only the settings page, or every page the plugin registers?Closure return values handled for localization and caching — evaluated per request, or cached at panel registration?Stack fit
PanelProvider via ->plugin(Plugin::make()->navigationGroup(...)). Fits cleanly into existing service-provider-based configuration without new infrastructure.Migration path
composer.json to allow filament-analytics ^3.1 and filament-analytics-core ^3.1; run composer update filament-analytics filament-analytics-core --with-dependencies.php artisan vendor:publish --tag=... only if the release notes indicate config or asset changes (none stated here — verify in the changelog).->navigationGroup('Analytics') (or a closure) to the plugin registration.php artisan optimize:clear (or at minimum config:clear, route:clear, view:clear).Compatibility
navigationGroup() preserves the translated group.Closure support does not conflict with any project-level navigation customization or policy-based menu filtering.Sequencing
Maintenance
navigationGroup() with both string and Closure examples, and to state the core 3.1 requirement.Support
composer show), verify the PanelProvider registration, clear caches, confirm authorization policies are not hiding the page.Scaling
Failure modes
null may produce an ungrouped or orphaned page; define expected behavior and test it.__()).Ramp-up
PanelProvider plugin registration and Filament's navigation group conventions — roughly half a day including reading the plugin's config and testing in a local panel.Assessment summary
filament-analytics-core to 3.1 and confirming the Filament/Laravel/PHP support matrix.Closure path explicitly if the team intends to use dynamic grouping, since that is where the only meaningful operational risk sits.How can I help you explore Laravel packages today?