{"id":37010477,"url":"https://github.com/programmernomad/laracorekit-demo-module","last_synced_at":"2026-01-14T01:00:13.631Z","repository":{"id":328928179,"uuid":"1117327209","full_name":"ProgrammerNomad/laracorekit-demo-module","owner":"ProgrammerNomad","description":"Auto-resetting demo environment for Laravel applications with Filament integration. Perfect for showcasing your Laravel projects with automatic database resets every 30 minutes.","archived":false,"fork":false,"pushed_at":"2025-12-16T09:24:20.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-19T21:31:18.515Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://laracorekit.mobrilz.digital/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProgrammerNomad.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-16T06:47:50.000Z","updated_at":"2025-12-16T09:24:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ProgrammerNomad/laracorekit-demo-module","commit_stats":null,"previous_names":["programmernomad/laracorekit-demo-module"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ProgrammerNomad/laracorekit-demo-module","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerNomad%2Flaracorekit-demo-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerNomad%2Flaracorekit-demo-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerNomad%2Flaracorekit-demo-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerNomad%2Flaracorekit-demo-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProgrammerNomad","download_url":"https://codeload.github.com/ProgrammerNomad/laracorekit-demo-module/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgrammerNomad%2Flaracorekit-demo-module/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28407634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T00:40:43.272Z","status":"ssl_error","status_checked_at":"2026-01-14T00:40:42.636Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T01:00:12.570Z","updated_at":"2026-01-14T01:00:13.555Z","avatar_url":"https://github.com/ProgrammerNomad.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LaraCoreKit Demo Module\n\nAuto-resetting demo environment for Laravel applications with Filament integration. Perfect for showcasing your Laravel projects with automatic database resets every 30 minutes.\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/programmernomad/laracorekit-demo-module.svg?style=flat-square)](https://packagist.org/packages/programmernomad/laracorekit-demo-module)\n[![Total Downloads](https://img.shields.io/packagist/dt/programmernomad/laracorekit-demo-module.svg?style=flat-square)](https://packagist.org/packages/programmernomad/laracorekit-demo-module)\n[![License](https://img.shields.io/packagist/l/programmernomad/laracorekit-demo-module.svg?style=flat-square)](https://packagist.org/packages/programmernomad/laracorekit-demo-module)\n\n## Features\n\n- ✅ **Auto-Reset Database**: Automatically fresh migrate + seed every 30 minutes (configurable)\n- ✅ **Demo Credentials Banner**: Show login credentials on auth pages and admin dashboard\n- ✅ **Filament Integration**: Beautiful admin widgets displaying demo info\n- ✅ **Action Blocking**: Prevent destructive operations (user deletion, critical settings)\n- ✅ **Media Cleanup**: Auto-delete uploaded files on reset\n- ✅ **Session \u0026 Cache Clear**: Clean state on every reset\n- ✅ **Security**: Domain whitelisting, production safeguards\n- ✅ **Cron Scheduling**: Integrated with Laravel scheduler\n- ✅ **Customizable**: Full control over reset interval, credentials, blocked actions\n\n## Use Cases\n\n- 🎭 **Demo Websites**: Show off your Laravel/Filament projects\n- 🧪 **Testing Environments**: Auto-reset sandbox for testers\n- 🎓 **Training Platforms**: Clean state for each training session\n- 🚀 **SaaS Trials**: Let users try your app without permanent changes\n\n## Requirements\n\n- PHP 8.2 or higher\n- Laravel 11.0 or 12.0\n- Filament 3.0 (optional, for admin widgets)\n\n## Installation\n\nInstall via Composer:\n\n```bash\ncomposer require programmernomad/laracorekit-demo-module\n```\n\nThe package will automatically register via Laravel's package auto-discovery.\n\n## Configuration\n\n### Step 1: Publish Configuration\n\n```bash\nphp artisan vendor:publish --tag=demo-config\n```\n\nThis creates `config/demo.php` with all available options.\n\n### Step 2: Update `.env`\n\nAdd these variables to your `.env` file:\n\n```env\n# Demo Mode Configuration\nDEMO_MODE=true\nDEMO_RESET_INTERVAL=30\n\n# Demo Credentials (shown on login pages)\nDEMO_ADMIN_EMAIL=admin@demo.test\nDEMO_ADMIN_PASSWORD=Admin@123\nDEMO_USER_EMAIL=user@demo.test\nDEMO_USER_PASSWORD=User@123\n```\n\n### Step 3: Setup Cron Job\n\nThe module uses Laravel's task scheduler. Add this to your server's crontab:\n\n```bash\n* * * * * cd /path/to/your/project \u0026\u0026 php artisan schedule:run \u003e\u003e /dev/null 2\u003e\u00261\n```\n\n**For Plesk Control Panel:**\n1. Go to **Scheduled Tasks (Cron Jobs)**\n2. Add new task with command:\n```bash\ncd /var/www/vhosts/yourdomain.com \u0026\u0026 php artisan schedule:run \u003e\u003e /dev/null 2\u003e\u00261\n```\n3. Run: Every minute\n\n## Usage\n\n### Enable Demo Mode\n\nSimply set in your `.env`:\n\n```env\nDEMO_MODE=true\n```\n\nThe module will:\n- Show demo credentials on login pages\n- Display admin dashboard banner with credentials\n- Block destructive actions\n- Auto-reset database every 30 minutes\n\n### Manual Database Reset\n\nForce an immediate reset:\n\n```bash\nphp artisan demo:reset\n```\n\nWith confirmation prompt:\n\n```bash\nphp artisan demo:reset --force\n```\n\n### Disable Demo Mode\n\nSet in `.env`:\n\n```env\nDEMO_MODE=false\n```\n\nAll demo features are disabled. No overhead.\n\n## Customization\n\n### Change Reset Interval\n\nIn `config/demo.php` or `.env`:\n\n```env\n# Reset every 60 minutes instead of 30\nDEMO_RESET_INTERVAL=60\n```\n\n### Add Custom Blocked Actions\n\nIn `config/demo.php`:\n\n```php\n'blocked_actions' =\u003e [\n    'user.delete',\n    'user.force-delete',\n    'role.delete',\n    'backup.run',\n    'your-custom-action', // Add your own\n],\n```\n\n### Customize Banner Appearance\n\nIn `config/demo.php`:\n\n```php\n'banner' =\u003e [\n    'show_on_login' =\u003e true,\n    'show_on_admin' =\u003e true,\n    'background_color' =\u003e 'yellow-50',\n    'border_color' =\u003e 'yellow-500',\n    'text_color' =\u003e 'yellow-900',\n],\n```\n\n### Domain Whitelisting (Security)\n\nOnly allow demo mode on specific domains:\n\n```php\n'allowed_hosts' =\u003e [\n    'demo.yourdomain.com',\n    'localhost',\n    '127.0.0.1',\n],\n```\n\n## Integration with Filament\n\n### Display Demo Banner in Admin Dashboard\n\nThe module automatically registers a Filament widget. To display it:\n\n**Option 1: In Dashboard Page**\n\n```php\nuse LaraCoreKit\\DemoModule\\Filament\\Widgets\\DemoBannerWidget;\n\nclass Dashboard extends Page\n{\n    protected function getHeaderWidgets(): array\n    {\n        return [\n            DemoBannerWidget::class,\n        ];\n    }\n}\n```\n\n**Option 2: In Custom Filament Page**\n\n```php\nuse LaraCoreKit\\DemoModule\\Filament\\Widgets\\DemoBannerWidget;\n\nprotected function getHeaderWidgets(): array\n{\n    return [\n        DemoBannerWidget::class,\n    ];\n}\n```\n\nThe widget will only show when `DEMO_MODE=true`.\n\n## UI Integration\n\n**See [UI_INTEGRATION_GUIDE.md](UI_INTEGRATION_GUIDE.md) for complete integration examples.**\n\n### Quick Start\n\n**Frontend Login:**\n```blade\n\u003cx-demo-login-banner type=\"user\" /\u003e\n```\n\n**Filament Admin Login:**\n```bash\n# Windows PowerShell\nCopy-Item \"vendor\\programmernomad\\laracorekit-demo-module\\stubs\\filament-login.blade.php\" `\n         -Destination \"resources\\views\\filament\\pages\\auth\\login.blade.php\"\n```\n\n## Blade Components\n\n### Login Page Banner\n\nAdd to your login view:\n\n```blade\n\u003cx-demo-login-banner type=\"user\" /\u003e\n```\n\nFor admin login:\n\n```blade\n\u003cx-demo-login-banner type=\"admin\" /\u003e\n```\n\nThis displays credentials when demo mode is active.\n\n## Security Features\n\n### Domain Validation\n\nIn production, demo mode only works on whitelisted domains (configured in `config/demo.php`).\n\n### Action Blocking\n\nDestructive actions are automatically blocked via Laravel Gates:\n\n```php\n// Example: This will be denied in demo mode\nGate::allows('user.delete'); // returns false\n```\n\n### Middleware Protection\n\nApply middleware to routes that should block actions:\n\n```php\nRoute::middleware('demo.block')-\u003egroup(function () {\n    // Protected routes\n});\n```\n\n## What Gets Reset?\n\nEvery reset cycle cleans:\n\n- ✅ **Database**: Fresh migrations + seeders\n- ✅ **Media Files**: `storage/app/public/media/*`\n- ✅ **Cache**: All cached data\n- ✅ **Sessions**: Active user sessions\n- ✅ **Logs**: Rotated (keeps last 7 days)\n\n**Preserved:**\n- ✅ `.env` configuration\n- ✅ Compiled assets (`public/build/*`)\n- ✅ Vendor packages\n- ✅ Node modules\n\n## Troubleshooting\n\n### Cron Not Running\n\nCheck if Laravel scheduler is working:\n\n```bash\nphp artisan schedule:list\n```\n\nYou should see `demo:reset` scheduled.\n\n### Demo Banner Not Showing\n\nClear config cache:\n\n```bash\nphp artisan config:clear\nphp artisan view:clear\n```\n\nVerify `.env`:\n\n```bash\nphp artisan tinker\n\u003e\u003e\u003e config('demo.enabled') // Should return true\n```\n\n### Reset Fails\n\nCheck logs:\n\n```bash\ntail -f storage/logs/laravel.log\n```\n\nRun manually with verbose output:\n\n```bash\nphp artisan demo:reset --force -vvv\n```\n\n### Media Files Not Deleting\n\nCheck permissions:\n\n```bash\nls -la storage/app/public/media/\nchmod -R 775 storage/app/public/media/\n```\n\n## Development\n\n### Local Development\n\nClone and link locally:\n\n```bash\n# Clone repo\ngit clone https://github.com/programmernomad/laracorekit-demo-module.git\n\n# In your Laravel project's composer.json\n{\n    \"repositories\": [\n        {\n            \"type\": \"path\",\n            \"url\": \"../aracorekit-demo-module\",\n            \"options\": {\n                \"symlink\": true\n            }\n        }\n    ],\n    \"require-dev\": {\n        \"programmernomad/laracorekit-demo-module\": \"@dev\"\n    }\n}\n\n# Install\ncomposer update programmernomad/laracorekit-demo-module\n```\n\n### Testing\n\n```bash\n# Run package tests\ncomposer test\n\n# Code style (Laravel Pint)\ncomposer pint\n```\n\n## Changelog\n\nPlease see [CHANGELOG.md](CHANGELOG.md) for recent changes.\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## Security\n\nIf you discover any security issues, please email security@example.com instead of using the issue tracker.\n\n## Credits\n\n- [ProgrammerNomad](https://github.com/ProgrammerNomad)\n- [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [LICENSE](LICENSE) for more information.\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/programmernomad/laracorekit-demo-module/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/programmernomad/laracorekit-demo-module/discussions)\n- **Documentation**: [Full Setup Guide](https://github.com/ProgrammerNomad/LaraCoreKit/blob/main/DEMO_SETUP.md)\n\n## Related Projects\n\n- [LaraCoreKit](https://github.com/ProgrammerNomad/LaraCoreKit) - Laravel 12 starter kit with modular architecture\n- [Demo Website](https://laracorekit.mobrilz.digital/) - Live demo powered by this module\n\n---\n\n**Made with ❤️ for the Laravel community**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrammernomad%2Flaracorekit-demo-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogrammernomad%2Flaracorekit-demo-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrammernomad%2Flaracorekit-demo-module/lists"}