Analytics - v1.0.0-beta1
Artisan Commands
ArtisanPack UI Analytics provides several Artisan commands for management and maintenance.
Installation Commands
analytics:install
Install the package with all required setup:
php artisan analytics:install
Options:
--skip-migrations- Don't run migrations--skip-assets- Don't publish assets--force- Overwrite existing files
# Fresh install
php artisan analytics:install
# Skip migrations (run manually later)
php artisan analytics:install --skip-migrations
# Force overwrite existing config
php artisan analytics:install --force
Site Management
analytics:create-site
Create a new analytics site:
php artisan analytics:create-site "Site Name" --domain=example.com
Options:
--domain=- Site domain--api-key=- Custom API key (auto-generated if not provided)--tenant-id=- Tenant ID for multi-tenant setups
# Basic site
php artisan analytics:create-site "My Website" --domain=mywebsite.com
# With custom API key
php artisan analytics:create-site "My Website" --domain=mywebsite.com --api-key=custom_key_123
# For specific tenant
php artisan analytics:create-site "Client Site" --domain=client.com --tenant-id=1
analytics:list-sites
List all configured sites:
php artisan analytics:list-sites
Output:
+----+-------------+------------------+------------+---------+
| ID | Name | Domain | API Key | Active |
+----+-------------+------------------+------------+---------+
| 1 | Main Site | example.com | abc123... | Yes |
| 2 | Client Site | client.com | def456... | Yes |
| 3 | Test Site | test.example.com | ghi789... | No |
+----+-------------+------------------+------------+---------+
analytics:regenerate-api-key
Generate a new API key for a site:
php artisan analytics:regenerate-api-key 1
Or by domain:
php artisan analytics:regenerate-api-key --domain=example.com
Data Management
analytics:cleanup
Clean up old analytics data based on retention settings:
php artisan analytics:cleanup
Options:
--days=- Override retention period--dry-run- Show what would be deleted without deleting--force- Skip confirmation
# Preview cleanup
php artisan analytics:cleanup --dry-run
# Clean data older than 30 days
php artisan analytics:cleanup --days=30
# Force cleanup without confirmation
php artisan analytics:cleanup --force
analytics:aggregate
Aggregate raw data into summary tables:
php artisan analytics:aggregate
Options:
--date=- Aggregate for specific date--period=- Aggregation period (day, week, month)
# Aggregate yesterday's data
php artisan analytics:aggregate --date=yesterday
# Monthly aggregation
php artisan analytics:aggregate --period=month
analytics:export
Export analytics data:
php artisan analytics:export --format=csv --output=analytics.csv
Options:
--site-id=- Export for specific site--start-date=- Start date--end-date=- End date--format=- Output format (csv, json)--output=- Output file path
# Export last 30 days as CSV
php artisan analytics:export --start-date="-30 days" --format=csv --output=export.csv
# Export specific site as JSON
php artisan analytics:export --site-id=1 --format=json --output=site1.json
analytics:delete-visitor
Delete all data for a specific visitor (GDPR compliance):
php artisan analytics:delete-visitor {visitor_id}
# Delete by visitor ID
php artisan analytics:delete-visitor 123
# Delete by fingerprint
php artisan analytics:delete-visitor --fingerprint=abc123def456
Cache Commands
analytics:clear-cache
Clear all analytics cache:
php artisan analytics:clear-cache
Options:
--site-id=- Clear cache for specific site only
# Clear all cache
php artisan analytics:clear-cache
# Clear cache for specific site
php artisan analytics:clear-cache --site-id=1
analytics:warm-cache
Pre-populate cache for better performance:
php artisan analytics:warm-cache
Options:
--site-id=- Warm cache for specific site
Statistics Commands
analytics:stats
Display quick statistics:
php artisan analytics:stats
Options:
--site-id=- Stats for specific site--period=- Time period (today, week, month, year)
# Today's stats
php artisan analytics:stats --period=today
# Monthly stats for specific site
php artisan analytics:stats --site-id=1 --period=month
Output:
Analytics Statistics (Last 30 Days)
===================================
Page Views: 12,345
Visitors: 3,456
Sessions: 4,567
Bounce Rate: 45.2%
Avg. Duration: 2m 34s
Top Pages:
1. /products (1,234 views)
2. /about (567 views)
3. /contact (345 views)
Scheduling Commands
Add to your scheduler for automated maintenance:
// routes/console.php or app/Console/Kernel.php
use Illuminate\Support\Facades\Schedule;
// Daily cleanup at 3 AM
Schedule::command('analytics:cleanup')->dailyAt('03:00');
// Hourly aggregation
Schedule::command('analytics:aggregate')->hourly();
// Warm cache every hour
Schedule::command('analytics:warm-cache')->hourly();
// Weekly full aggregation
Schedule::command('analytics:aggregate --period=week')->weekly();
Creating Custom Commands
Extend analytics functionality with custom commands:
namespace App\Console\Commands;
use ArtisanPackUI\Analytics\Data\DateRange;
use ArtisanPackUI\Analytics\Services\AnalyticsQuery;
use Illuminate\Console\Command;
class AnalyticsReport extends Command
{
protected $signature = 'analytics:report {--email=}';
protected $description = 'Generate and send analytics report';
public function handle(AnalyticsQuery $query): int
{
$range = DateRange::lastWeek();
$stats = $query->getStats($range);
$this->info("Weekly Analytics Report");
$this->table(
['Metric', 'Value'],
[
['Page Views', number_format($stats['pageviews'])],
['Visitors', number_format($stats['visitors'])],
['Sessions', number_format($stats['sessions'])],
['Bounce Rate', $stats['bounce_rate'] . '%'],
]
);
if ($email = $this->option('email')) {
// Send email with report
}
return Command::SUCCESS;
}
}
Command Exit Codes
All commands follow standard exit codes:
0- Success1- General error2- Misuse of command
Use in scripts:
php artisan analytics:cleanup
if [ $? -eq 0 ]; then
echo "Cleanup successful"
else
echo "Cleanup failed"
fi