artisanpack-ui/analytics
Laravel package adding an admin UI for analytics: configure tracking, view key metrics and reports, and manage dashboards from your application. Designed to integrate quickly with common Laravel stacks and provide a clean, configurable analytics panel.
Core Alignment: The package now integrates with artisanpack-ui/ai, introducing AI-driven narrative insights while maintaining Laravel’s ecosystem compatibility (Eloquent, Livewire, API routes). The AI agents add a decision-layer on top of raw analytics, transforming raw data into actionable insights (e.g., anomaly explanations, segment patterns). This is a high-value fit for data-informed teams but introduces new dependencies (artisanpack-ui/ai) and complexity in feature gating, permissions, and AI-generated content moderation.
DigestEmailAgent introduces email-based data retention risks (e.g., cached digests, user preferences).where('tenant_id', ...)) to avoid cross-tenant data leaks in insights.Modularity: AI features are opt-in via FeatureRegistry, allowing gradual adoption. However, the tight coupling with artisanpack-ui/ai means vendor lock-in risk if the AI package stagnates or changes APIs.
orchestra/testbench and illuminate/* constraints align with their stack.artisanpack-ui/ai (≥v1.0). Add this to composer.json:
composer require artisanpack-ui/ai
AnalyticsServiceProvider::aiFeatures(). Overlook this step, and the features won’t appear in admin UIs.analytics_digest_preferences table for email digests. Run:
php artisan migrate
DigestEmailAgent requires:
.env.SendDigestEmailJob.<livewire:artisanpack-analytics::ai.* /> components. Ensure your Livewire stack supports Alpine.js (used for dynamic UI states).useAiAgent hooks/composables. Bundle analysis required to avoid conflicts with existing JS (e.g., duplicate React instances)./api/analytics/ai/* endpoints require CORS configuration if accessed from non-Laravel frontends.InsightSummaryAgent) may fail or return hallucinated insights. Implement:
ai.anomaly_explanation).analytics_digest_preferences) may need GDPR-compliant deletion. Add a deleteDigestPreferences() method to user models.artisanpack-ui/ai docs). If yes, disclose this in your privacy policy.analytics.ai.use ability. Misconfigured policies (e.g., overly permissive defaults) could expose sensitive insights. Audit in AuthServiceProvider:
Gate::define('analytics.ai.use', function (User $user) {
return $user->isAdmin(); // Customize as needed
});
SendDigestEmailJob could overwhelm queues if many users subscribe. Monitor queue length and implement batch processing (e.g., 100 emails/hour).import('./InsightSummary')) to lazy-load AI features.artisanpack-ui/ai use customer data to train models? If yes, how will this be disclosed to users?analytics.ai.use revoked)?artisanpack-ui/ai’s SummarizationAgent/FeatureRegistry. Requires:
SendDigestEmailJob).analytics_digest_preferences table (migration provided).user_id and cadence columns for fast lookups.ai.anomaly_explanation failures).<livewire:ai.insight-summary />). Use wire:ignore for heavy JS components.// React example
const InsightSummary = React.lazy(() => import('@artisanpack/analytics/InsightSummary'));
Mailable system for digests. Customize resources/views/vendor/analytics/emails/digest.blade.php.artisanpack-ui/ai’s cost tracker).SendDigestEmailJob during peak digest hours (e.g., weekly).artisanpack-ui/ai docs for:
AuthServiceProvider.composer require artisanpack-ui/ai
php artisan vendor:publish --provider="ArtisanPack\Analytics\AnalyticsServiceProvider" --tag="ai-features"
php artisan migrate
// app/Providers/AnalyticsServiceProvider.php
public function aiFeatures()
{
FeatureRegistry::register([
'analytics.insight_summary' => InsightSummaryAgent::class,
'analytics.explain_anomaly' => AnomalyExplanationAgent::class,
// ... other features
]);
}
analytics.insight_summary and analytics.explain_anomaly for power users (feature-flagged).InsightSummaryAgent output to manual analysis).How can I help you explore Laravel packages today?