{"owner":"thedevdojo","repo":"wave","hasSkills":true,"totalSkillsCount":1,"totalTokensCount":1587,"categories":["claude-rule"],"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nWave is a Laravel-based SaaS framework that provides essential features for building subscription-based applications. The application uses a modular architecture with themes, plugins, and a custom admin panel built with Filament.\n\n## Development Commands\n\n### Frontend Development\n- `npm run dev` - Start Vite development server\n- `npm run build` - Build assets for production\n\n### Backend Development\n- `php artisan serve` - Start Laravel development server\n- `composer run dev` - Start full development environment (server, queue, logs, and Vite)\n\n### Database & Migrations\n- `php artisan migrate` - Run database migrations\n- `php artisan db:seed` - Seed the database\n- `php artisan migrate:fresh --seed` - Fresh migration with seeding\n\n### Testing\n- `php artisan test` - Run PHPUnit tests\n- `vendor/bin/pest` - Run Pest tests\n\n### Queue Management\n- `php artisan queue:work` - Process queued jobs\n- `php artisan queue:listen --tries=1` - Listen for jobs with retry limit\n\n### Wave-Specific Commands\n- `php artisan wave:cancel-expired-subscriptions` - Cancel expired subscriptions\n- `php artisan wave:create-plugin` - Create a new plugin\n\n## Architecture Overview\n\n### Core Structure\n- `app/` - Standard Laravel application files\n- `wave/` - Wave framework core files and components\n- `resources/themes/` - Theme files (Blade templates, assets)\n- `resources/plugins/` - Plugin system files\n- `config/wave.php` - Main Wave configuration\n\n### Key Components\n\n#### Wave Service Provider (`wave/src/WaveServiceProvider.php`)\n- Registers middleware, Livewire components, and Blade directives\n- Handles plugin registration and theme management\n- Configures Filament colors and authentication\n\n#### Models & Database\n- User model extends Wave User with subscription capabilities\n- Subscription management with Stripe/Paddle integration\n- Role-based permissions using Spatie Laravel Permission\n\n#### Theme System\n- Multiple themes available in `resources/themes/`\n- Theme switching in demo mode via cookies\n- Folio integration for page routing\n\n#### Admin Panel\n- Filament-based admin interface\n- Resource management for users, posts, plans, etc.\n- Located in `app/Filament/`\n\n### Billing Integration\n- Supports both Stripe and Paddle\n- Configured via `config/wave.php` and environment variables\n- Webhook handling for subscription events\n\n### Plugin System\n- Plugins located in `resources/plugins/`\n- Auto-loading via `PluginServiceProvider`\n- Plugin creation command available\n\n## Configuration\n\n### Environment Variables\n- `WAVE_DOCS` - Show/hide documentation\n- `WAVE_DEMO` - Enable demo mode\n- `WAVE_BAR` - Show development bar\n- `BILLING_PROVIDER` - Set to 'stripe' or 'paddle'\n\n### Important Config Files\n- `config/wave.php` - Main Wave configuration\n- `config/themes.php` - Theme configuration\n- `config/settings.php` - Application settings\n\n## Testing\n\nThe application uses Pest for testing with PHPUnit as the underlying framework. Test files are located in `tests/` with separate directories for Feature and Unit tests.\n\n## Development Notes\n\n- The application uses Laravel Folio for page routing\n- Livewire components handle dynamic UI interactions\n- Filament provides the admin interface\n- Theme development follows Blade templating conventions\n- Plugin development follows Laravel package conventions\n\n## Performance Optimizations\n\n### Caching Strategy\n- User subscription/admin status cached for 5-10 minutes\n- Active plans cached for 30 minutes\n- Categories cached for 1 hour\n- Helper files cached permanently until cleared\n- Theme colors cached for 1 hour\n- Plugin lists cached for 1 hour\n\n### Cache Clearing\n- User caches cleared via `$user->clearUserCache()` method\n- Plan caches cleared via `Plan::clearCache()` method\n- Category caches cleared via `Category::clearCache()` method\n\n### Database Optimizations\n- Eager loading relationships to prevent N+1 queries\n- Cached query results for frequently accessed data\n- Optimized middleware to use cached user roles\n\n### Usage Tips\n- Use `Plan::getActivePlans()` instead of `Plan::where('active', 1)->get()`\n- Use `Plan::getByName($name)` instead of `Plan::where('name', $name)->first()`\n- Use `Category::getAllCached()` instead of `Category::all()`\n- Always clear relevant caches when updating user roles, plans, or categories\n\n### Installation & CI Compatibility\n- All caching methods include fallbacks for when cache service is unavailable\n- Service provider guards against cache binding issues during package discovery\n- Compatible with automated testing environments and CI/CD pipelines\n\n## Activity Log Feature\n\nA simple, performant activity logging system for tracking user actions.\n\n### Configuration\n\nEdit `config/activity.php`:\n\n```php\nreturn [\n    // Enable/disable activity logging\n    'enabled' => env('ACTIVITY_LOG_ENABLED', true),\n\n    // Queue logs for better performance (recommended for busy apps)\n    'queue' => env('ACTIVITY_LOG_QUEUE', false),\n\n    // Queue connection to use\n    'queue_connection' => env('ACTIVITY_LOG_QUEUE_CONNECTION', 'database'),\n\n    // How many days to keep logs before auto-deletion\n    'retention_days' => env('ACTIVITY_LOG_RETENTION_DAYS', 90),\n];\n```\n\n### Environment Variables\n\n```env\n# Disable activity logging\nACTIVITY_LOG_ENABLED=false\n\n# Enable queued logging (recommended for production)\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n\n# Keep logs for 30 days instead of default 90\nACTIVITY_LOG_RETENTION_DAYS=30\n```\n\n### Usage\n\n#### Basic Logging\n\n```php\nuse Wave\\ActivityLog;\n\n// Simple log\nActivityLog::log('action_name', 'Description of what happened');\n\n// With metadata\nActivityLog::log('profile_updated', 'User updated their email', [\n    'old_email' => 'old@example.com',\n    'new_email' => 'new@example.com'\n]);\n```\n\n### Cleanup & Maintenance\n\nActivity logs are automatically cleaned up daily to prevent database bloat:\n\n```bash\n# Manually clean logs older than configured retention period\nphp artisan activity:clean\n\n# Clean logs older than specific number of days\nphp artisan activity:clean --days=30\n\n# Force cleanup without confirmation\nphp artisan activity:clean --no-interaction\n```\n\nThe cleanup command runs automatically every day via Laravel's scheduler.\n\n#### Queued (Recommended for Production)\n```env\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n```\n\n### Disabling\n\nTo completely disable activity logging:\n\n```env\nACTIVITY_LOG_ENABLED=false\n```\n\n## Account Deletion Feature\n\nA scheduled account deletion system that gives users a grace period before permanent deletion.\n\n### Scheduled Command\n\nThe system automatically processes scheduled deletions daily:\n\n```bash\n# Manually process scheduled deletions\nphp artisan accounts:process-deletions\n```\n\nThis command:\n1. Finds all users with `deletion_scheduled_at` <= current time\n2. Permanently deletes those accounts (force delete)\n3. Logs results (success/failure for each account)\n4. Returns count of deleted accounts\n\n### Automatic Scheduling\n\nThe deletion processor runs automatically every day via Laravel's scheduler (configured in `routes/console.php`):\n\n```php\nSchedule::command('accounts:process-deletions')->daily();\n```\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nWave is a Laravel-based SaaS framework that provides essential features for building subscription-based applications. The application uses a modular architecture with themes, plugins, and a custom admin panel built with Filament.\n\n## Development Commands\n\n### Frontend Development\n- `npm run dev` - Start Vite development server\n- `npm run build` - Build assets for production\n\n### Backend Development\n- `php artisan serve` - Start Laravel development server\n- `composer run dev` - Start full development environment (server, queue, logs, and Vite)\n\n### Database & Migrations\n- `php artisan migrate` - Run database migrations\n- `php artisan db:seed` - Seed the database\n- `php artisan migrate:fresh --seed` - Fresh migration with seeding\n\n### Testing\n- `php artisan test` - Run PHPUnit tests\n- `vendor/bin/pest` - Run Pest tests\n\n### Queue Management\n- `php artisan queue:work` - Process queued jobs\n- `php artisan queue:listen --tries=1` - Listen for jobs with retry limit\n\n### Wave-Specific Commands\n- `php artisan wave:cancel-expired-subscriptions` - Cancel expired subscriptions\n- `php artisan wave:create-plugin` - Create a new plugin\n\n## Architecture Overview\n\n### Core Structure\n- `app/` - Standard Laravel application files\n- `wave/` - Wave framework core files and components\n- `resources/themes/` - Theme files (Blade templates, assets)\n- `resources/plugins/` - Plugin system files\n- `config/wave.php` - Main Wave configuration\n\n### Key Components\n\n#### Wave Service Provider (`wave/src/WaveServiceProvider.php`)\n- Registers middleware, Livewire components, and Blade directives\n- Handles plugin registration and theme management\n- Configures Filament colors and authentication\n\n#### Models & Database\n- User model extends Wave User with subscription capabilities\n- Subscription management with Stripe/Paddle integration\n- Role-based permissions using Spatie Laravel Permission\n\n#### Theme System\n- Multiple themes available in `resources/themes/`\n- Theme switching in demo mode via cookies\n- Folio integration for page routing\n\n#### Admin Panel\n- Filament-based admin interface\n- Resource management for users, posts, plans, etc.\n- Located in `app/Filament/`\n\n### Billing Integration\n- Supports both Stripe and Paddle\n- Configured via `config/wave.php` and environment variables\n- Webhook handling for subscription events\n\n### Plugin System\n- Plugins located in `resources/plugins/`\n- Auto-loading via `PluginServiceProvider`\n- Plugin creation command available\n\n## Configuration\n\n### Environment Variables\n- `WAVE_DOCS` - Show/hide documentation\n- `WAVE_DEMO` - Enable demo mode\n- `WAVE_BAR` - Show development bar\n- `BILLING_PROVIDER` - Set to 'stripe' or 'paddle'\n\n### Important Config Files\n- `config/wave.php` - Main Wave configuration\n- `config/themes.php` - Theme configuration\n- `config/settings.php` - Application settings\n\n## Testing\n\nThe application uses Pest for testing with PHPUnit as the underlying framework. Test files are located in `tests/` with separate directories for Feature and Unit tests.\n\n## Development Notes\n\n- The application uses Laravel Folio for page routing\n- Livewire components handle dynamic UI interactions\n- Filament provides the admin interface\n- Theme development follows Blade templating conventions\n- Plugin development follows Laravel package conventions\n\n## Performance Optimizations\n\n### Caching Strategy\n- User subscription/admin status cached for 5-10 minutes\n- Active plans cached for 30 minutes\n- Categories cached for 1 hour\n- Helper files cached permanently until cleared\n- Theme colors cached for 1 hour\n- Plugin lists cached for 1 hour\n\n### Cache Clearing\n- User caches cleared via `$user->clearUserCache()` method\n- Plan caches cleared via `Plan::clearCache()` method\n- Category caches cleared via `Category::clearCache()` method\n\n### Database Optimizations\n- Eager loading relationships to prevent N+1 queries\n- Cached query results for frequently accessed data\n- Optimized middleware to use cached user roles\n\n### Usage Tips\n- Use `Plan::getActivePlans()` instead of `Plan::where('active', 1)->get()`\n- Use `Plan::getByName($name)` instead of `Plan::where('name', $name)->first()`\n- Use `Category::getAllCached()` instead of `Category::all()`\n- Always clear relevant caches when updating user roles, plans, or categories\n\n### Installation & CI Compatibility\n- All caching methods include fallbacks for when cache service is unavailable\n- Service provider guards against cache binding issues during package discovery\n- Compatible with automated testing environments and CI/CD pipelines\n\n## Activity Log Feature\n\nA simple, performant activity logging system for tracking user actions.\n\n### Configuration\n\nEdit `config/activity.php`:\n\n```php\nreturn [\n    // Enable/disable activity logging\n    'enabled' => env('ACTIVITY_LOG_ENABLED', true),\n\n    // Queue logs for better performance (recommended for busy apps)\n    'queue' => env('ACTIVITY_LOG_QUEUE', false),\n\n    // Queue connection to use\n    'queue_connection' => env('ACTIVITY_LOG_QUEUE_CONNECTION', 'database'),\n\n    // How many days to keep logs before auto-deletion\n    'retention_days' => env('ACTIVITY_LOG_RETENTION_DAYS', 90),\n];\n```\n\n### Environment Variables\n\n```env\n# Disable activity logging\nACTIVITY_LOG_ENABLED=false\n\n# Enable queued logging (recommended for production)\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n\n# Keep logs for 30 days instead of default 90\nACTIVITY_LOG_RETENTION_DAYS=30\n```\n\n### Usage\n\n#### Basic Logging\n\n```php\nuse Wave\\ActivityLog;\n\n// Simple log\nActivityLog::log('action_name', 'Description of what happened');\n\n// With metadata\nActivityLog::log('profile_updated', 'User updated their email', [\n    'old_email' => 'old@example.com',\n    'new_email' => 'new@example.com'\n]);\n```\n\n### Cleanup & Maintenance\n\nActivity logs are automatically cleaned up daily to prevent database bloat:\n\n```bash\n# Manually clean logs older than configured retention period\nphp artisan activity:clean\n\n# Clean logs older than specific number of days\nphp artisan activity:clean --days=30\n\n# Force cleanup without confirmation\nphp artisan activity:clean --no-interaction\n```\n\nThe cleanup command runs automatically every day via Laravel's scheduler.\n\n#### Queued (Recommended for Production)\n```env\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n```\n\n### Disabling\n\nTo completely disable activity logging:\n\n```env\nACTIVITY_LOG_ENABLED=false\n```\n\n## Account Deletion Feature\n\nA scheduled account deletion system that gives users a grace period before permanent deletion.\n\n### Scheduled Command\n\nThe system automatically processes scheduled deletions daily:\n\n```bash\n# Manually process scheduled deletions\nphp artisan accounts:process-deletions\n```\n\nThis command:\n1. Finds all users with `deletion_scheduled_at` <= current time\n2. Permanently deletes those accounts (force delete)\n3. Logs results (success/failure for each account)\n4. Returns count of deleted accounts\n\n### Automatic Scheduling\n\nThe deletion processor runs automatically every day via Laravel's scheduler (configured in `routes/console.php`):\n\n```php\nSchedule::command('accounts:process-deletions')->daily();\n```\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/thedevdojo/wave/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nWave is a Laravel-based SaaS framework that provides essential features for building subscription-based applications. The application uses a modular architecture with themes, plugins, and a custom admin panel built with Filament.\n\n## Development Commands\n\n### Frontend Development\n- `npm run dev` - Start Vite development server\n- `npm run build` - Build assets for production\n\n### Backend Development\n- `php artisan serve` - Start Laravel development server\n- `composer run dev` - Start full development environment (server, queue, logs, and Vite)\n\n### Database & Migrations\n- `php artisan migrate` - Run database migrations\n- `php artisan db:seed` - Seed the database\n- `php artisan migrate:fresh --seed` - Fresh migration with seeding\n\n### Testing\n- `php artisan test` - Run PHPUnit tests\n- `vendor/bin/pest` - Run Pest tests\n\n### Queue Management\n- `php artisan queue:work` - Process queued jobs\n- `php artisan queue:listen --tries=1` - Listen for jobs with retry limit\n\n### Wave-Specific Commands\n- `php artisan wave:cancel-expired-subscriptions` - Cancel expired subscriptions\n- `php artisan wave:create-plugin` - Create a new plugin\n\n## Architecture Overview\n\n### Core Structure\n- `app/` - Standard Laravel application files\n- `wave/` - Wave framework core files and components\n- `resources/themes/` - Theme files (Blade templates, assets)\n- `resources/plugins/` - Plugin system files\n- `config/wave.php` - Main Wave configuration\n\n### Key Components\n\n#### Wave Service Provider (`wave/src/WaveServiceProvider.php`)\n- Registers middleware, Livewire components, and Blade directives\n- Handles plugin registration and theme management\n- Configures Filament colors and authentication\n\n#### Models & Database\n- User model extends Wave User with subscription capabilities\n- Subscription management with Stripe/Paddle integration\n- Role-based permissions using Spatie Laravel Permission\n\n#### Theme System\n- Multiple themes available in `resources/themes/`\n- Theme switching in demo mode via cookies\n- Folio integration for page routing\n\n#### Admin Panel\n- Filament-based admin interface\n- Resource management for users, posts, plans, etc.\n- Located in `app/Filament/`\n\n### Billing Integration\n- Supports both Stripe and Paddle\n- Configured via `config/wave.php` and environment variables\n- Webhook handling for subscription events\n\n### Plugin System\n- Plugins located in `resources/plugins/`\n- Auto-loading via `PluginServiceProvider`\n- Plugin creation command available\n\n## Configuration\n\n### Environment Variables\n- `WAVE_DOCS` - Show/hide documentation\n- `WAVE_DEMO` - Enable demo mode\n- `WAVE_BAR` - Show development bar\n- `BILLING_PROVIDER` - Set to 'stripe' or 'paddle'\n\n### Important Config Files\n- `config/wave.php` - Main Wave configuration\n- `config/themes.php` - Theme configuration\n- `config/settings.php` - Application settings\n\n## Testing\n\nThe application uses Pest for testing with PHPUnit as the underlying framework. Test files are located in `tests/` with separate directories for Feature and Unit tests.\n\n## Development Notes\n\n- The application uses Laravel Folio for page routing\n- Livewire components handle dynamic UI interactions\n- Filament provides the admin interface\n- Theme development follows Blade templating conventions\n- Plugin development follows Laravel package conventions\n\n## Performance Optimizations\n\n### Caching Strategy\n- User subscription/admin status cached for 5-10 minutes\n- Active plans cached for 30 minutes\n- Categories cached for 1 hour\n- Helper files cached permanently until cleared\n- Theme colors cached for 1 hour\n- Plugin lists cached for 1 hour\n\n### Cache Clearing\n- User caches cleared via `$user->clearUserCache()` method\n- Plan caches cleared via `Plan::clearCache()` method\n- Category caches cleared via `Category::clearCache()` method\n\n### Database Optimizations\n- Eager loading relationships to prevent N+1 queries\n- Cached query results for frequently accessed data\n- Optimized middleware to use cached user roles\n\n### Usage Tips\n- Use `Plan::getActivePlans()` instead of `Plan::where('active', 1)->get()`\n- Use `Plan::getByName($name)` instead of `Plan::where('name', $name)->first()`\n- Use `Category::getAllCached()` instead of `Category::all()`\n- Always clear relevant caches when updating user roles, plans, or categories\n\n### Installation & CI Compatibility\n- All caching methods include fallbacks for when cache service is unavailable\n- Service provider guards against cache binding issues during package discovery\n- Compatible with automated testing environments and CI/CD pipelines\n\n## Activity Log Feature\n\nA simple, performant activity logging system for tracking user actions.\n\n### Configuration\n\nEdit `config/activity.php`:\n\n```php\nreturn [\n    // Enable/disable activity logging\n    'enabled' => env('ACTIVITY_LOG_ENABLED', true),\n\n    // Queue logs for better performance (recommended for busy apps)\n    'queue' => env('ACTIVITY_LOG_QUEUE', false),\n\n    // Queue connection to use\n    'queue_connection' => env('ACTIVITY_LOG_QUEUE_CONNECTION', 'database'),\n\n    // How many days to keep logs before auto-deletion\n    'retention_days' => env('ACTIVITY_LOG_RETENTION_DAYS', 90),\n];\n```\n\n### Environment Variables\n\n```env\n# Disable activity logging\nACTIVITY_LOG_ENABLED=false\n\n# Enable queued logging (recommended for production)\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n\n# Keep logs for 30 days instead of default 90\nACTIVITY_LOG_RETENTION_DAYS=30\n```\n\n### Usage\n\n#### Basic Logging\n\n```php\nuse Wave\\ActivityLog;\n\n// Simple log\nActivityLog::log('action_name', 'Description of what happened');\n\n// With metadata\nActivityLog::log('profile_updated', 'User updated their email', [\n    'old_email' => 'old@example.com',\n    'new_email' => 'new@example.com'\n]);\n```\n\n### Cleanup & Maintenance\n\nActivity logs are automatically cleaned up daily to prevent database bloat:\n\n```bash\n# Manually clean logs older than configured retention period\nphp artisan activity:clean\n\n# Clean logs older than specific number of days\nphp artisan activity:clean --days=30\n\n# Force cleanup without confirmation\nphp artisan activity:clean --no-interaction\n```\n\nThe cleanup command runs automatically every day via Laravel's scheduler.\n\n#### Queued (Recommended for Production)\n```env\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n```\n\n### Disabling\n\nTo completely disable activity logging:\n\n```env\nACTIVITY_LOG_ENABLED=false\n```\n\n## Account Deletion Feature\n\nA scheduled account deletion system that gives users a grace period before permanent deletion.\n\n### Scheduled Command\n\nThe system automatically processes scheduled deletions daily:\n\n```bash\n# Manually process scheduled deletions\nphp artisan accounts:process-deletions\n```\n\nThis command:\n1. Finds all users with `deletion_scheduled_at` <= current time\n2. Permanently deletes those accounts (force delete)\n3. Logs results (success/failure for each account)\n4. Returns count of deleted accounts\n\n### Automatic Scheduling\n\nThe deletion processor runs automatically every day via Laravel's scheduler (configured in `routes/console.php`):\n\n```php\nSchedule::command('accounts:process-deletions')->daily();\n```\n","isInternal":false,"tokens":1587,"sizeBytes":7272}],"systemPromptSnippet":"<yakaai_skills repo=\"thedevdojo/wave\">\n<!-- File: CLAUDE.md (Tokens: ~1587 | Category: claude-rule) -->\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nWave is a Laravel-based SaaS framework that provides essential features for building subscription-based applications. The application uses a modular architecture with themes, plugins, and a custom admin panel built with Filament.\n\n## Development Commands\n\n### Frontend Development\n- `npm run dev` - Start Vite development server\n- `npm run build` - Build assets for production\n\n### Backend Development\n- `php artisan serve` - Start Laravel development server\n- `composer run dev` - Start full development environment (server, queue, logs, and Vite)\n\n### Database & Migrations\n- `php artisan migrate` - Run database migrations\n- `php artisan db:seed` - Seed the database\n- `php artisan migrate:fresh --seed` - Fresh migration with seeding\n\n### Testing\n- `php artisan test` - Run PHPUnit tests\n- `vendor/bin/pest` - Run Pest tests\n\n### Queue Management\n- `php artisan queue:work` - Process queued jobs\n- `php artisan queue:listen --tries=1` - Listen for jobs with retry limit\n\n### Wave-Specific Commands\n- `php artisan wave:cancel-expired-subscriptions` - Cancel expired subscriptions\n- `php artisan wave:create-plugin` - Create a new plugin\n\n## Architecture Overview\n\n### Core Structure\n- `app/` - Standard Laravel application files\n- `wave/` - Wave framework core files and components\n- `resources/themes/` - Theme files (Blade templates, assets)\n- `resources/plugins/` - Plugin system files\n- `config/wave.php` - Main Wave configuration\n\n### Key Components\n\n#### Wave Service Provider (`wave/src/WaveServiceProvider.php`)\n- Registers middleware, Livewire components, and Blade directives\n- Handles plugin registration and theme management\n- Configures Filament colors and authentication\n\n#### Models & Database\n- User model extends Wave User with subscription capabilities\n- Subscription management with Stripe/Paddle integration\n- Role-based permissions using Spatie Laravel Permission\n\n#### Theme System\n- Multiple themes available in `resources/themes/`\n- Theme switching in demo mode via cookies\n- Folio integration for page routing\n\n#### Admin Panel\n- Filament-based admin interface\n- Resource management for users, posts, plans, etc.\n- Located in `app/Filament/`\n\n### Billing Integration\n- Supports both Stripe and Paddle\n- Configured via `config/wave.php` and environment variables\n- Webhook handling for subscription events\n\n### Plugin System\n- Plugins located in `resources/plugins/`\n- Auto-loading via `PluginServiceProvider`\n- Plugin creation command available\n\n## Configuration\n\n### Environment Variables\n- `WAVE_DOCS` - Show/hide documentation\n- `WAVE_DEMO` - Enable demo mode\n- `WAVE_BAR` - Show development bar\n- `BILLING_PROVIDER` - Set to 'stripe' or 'paddle'\n\n### Important Config Files\n- `config/wave.php` - Main Wave configuration\n- `config/themes.php` - Theme configuration\n- `config/settings.php` - Application settings\n\n## Testing\n\nThe application uses Pest for testing with PHPUnit as the underlying framework. Test files are located in `tests/` with separate directories for Feature and Unit tests.\n\n## Development Notes\n\n- The application uses Laravel Folio for page routing\n- Livewire components handle dynamic UI interactions\n- Filament provides the admin interface\n- Theme development follows Blade templating conventions\n- Plugin development follows Laravel package conventions\n\n## Performance Optimizations\n\n### Caching Strategy\n- User subscription/admin status cached for 5-10 minutes\n- Active plans cached for 30 minutes\n- Categories cached for 1 hour\n- Helper files cached permanently until cleared\n- Theme colors cached for 1 hour\n- Plugin lists cached for 1 hour\n\n### Cache Clearing\n- User caches cleared via `$user->clearUserCache()` method\n- Plan caches cleared via `Plan::clearCache()` method\n- Category caches cleared via `Category::clearCache()` method\n\n### Database Optimizations\n- Eager loading relationships to prevent N+1 queries\n- Cached query results for frequently accessed data\n- Optimized middleware to use cached user roles\n\n### Usage Tips\n- Use `Plan::getActivePlans()` instead of `Plan::where('active', 1)->get()`\n- Use `Plan::getByName($name)` instead of `Plan::where('name', $name)->first()`\n- Use `Category::getAllCached()` instead of `Category::all()`\n- Always clear relevant caches when updating user roles, plans, or categories\n\n### Installation & CI Compatibility\n- All caching methods include fallbacks for when cache service is unavailable\n- Service provider guards against cache binding issues during package discovery\n- Compatible with automated testing environments and CI/CD pipelines\n\n## Activity Log Feature\n\nA simple, performant activity logging system for tracking user actions.\n\n### Configuration\n\nEdit `config/activity.php`:\n\n```php\nreturn [\n    // Enable/disable activity logging\n    'enabled' => env('ACTIVITY_LOG_ENABLED', true),\n\n    // Queue logs for better performance (recommended for busy apps)\n    'queue' => env('ACTIVITY_LOG_QUEUE', false),\n\n    // Queue connection to use\n    'queue_connection' => env('ACTIVITY_LOG_QUEUE_CONNECTION', 'database'),\n\n    // How many days to keep logs before auto-deletion\n    'retention_days' => env('ACTIVITY_LOG_RETENTION_DAYS', 90),\n];\n```\n\n### Environment Variables\n\n```env\n# Disable activity logging\nACTIVITY_LOG_ENABLED=false\n\n# Enable queued logging (recommended for production)\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n\n# Keep logs for 30 days instead of default 90\nACTIVITY_LOG_RETENTION_DAYS=30\n```\n\n### Usage\n\n#### Basic Logging\n\n```php\nuse Wave\\ActivityLog;\n\n// Simple log\nActivityLog::log('action_name', 'Description of what happened');\n\n// With metadata\nActivityLog::log('profile_updated', 'User updated their email', [\n    'old_email' => 'old@example.com',\n    'new_email' => 'new@example.com'\n]);\n```\n\n### Cleanup & Maintenance\n\nActivity logs are automatically cleaned up daily to prevent database bloat:\n\n```bash\n# Manually clean logs older than configured retention period\nphp artisan activity:clean\n\n# Clean logs older than specific number of days\nphp artisan activity:clean --days=30\n\n# Force cleanup without confirmation\nphp artisan activity:clean --no-interaction\n```\n\nThe cleanup command runs automatically every day via Laravel's scheduler.\n\n#### Queued (Recommended for Production)\n```env\nACTIVITY_LOG_QUEUE=true\nACTIVITY_LOG_QUEUE_CONNECTION=redis\n```\n\n### Disabling\n\nTo completely disable activity logging:\n\n```env\nACTIVITY_LOG_ENABLED=false\n```\n\n## Account Deletion Feature\n\nA scheduled account deletion system that gives users a grace period before permanent deletion.\n\n### Scheduled Command\n\nThe system automatically processes scheduled deletions daily:\n\n```bash\n# Manually process scheduled deletions\nphp artisan accounts:process-deletions\n```\n\nThis command:\n1. Finds all users with `deletion_scheduled_at` <= current time\n2. Permanently deletes those accounts (force delete)\n3. Logs results (success/failure for each account)\n4. Returns count of deleted accounts\n\n### Automatic Scheduling\n\nThe deletion processor runs automatically every day via Laravel's scheduler (configured in `routes/console.php`):\n\n```php\nSchedule::command('accounts:process-deletions')->daily();\n```\n</yakaai_skills>"}