Manage a demo installation.
Set up a separate demo and reset its sample data without touching your live customer program.
Use this guide only for a separate demo. For your live customer program, follow Installation with sample data switched off.
Reset a reusable demo installation
Use a separate installation and database for a public sales demo. Set APP_DEMO=true, then run this command from cron when you want to restore the seeded example:
Choose the demo content profile in .env. Smart wallet shows three loyalty cards on the member homepage, alongside stamps, vouchers, and prepaid passes. A fourth loyalty card remains available outside the homepage:
APP_DEMO_CONTENT_PROFILE=smart_wallet
Use public_listing for the expanded discovery catalogue. The profile changes seeded demo content and leaves the selected homepage layout alone.
php /absolute/path/to/artisan demo:reset --force
The reset places an installed site in maintenance mode, blocks overlapping runs, removes managed public and private uploads, rebuilds the database, seeds the demo, and clears the application cache. php artisan install uses the same reset pipeline, but demo:reset adds the demo-mode guard and suits a scheduled public demo.
The terminal shows migration and seeder progress while the reset runs. Visitors see a demo refresh message asking them to try again shortly. Allow a few minutes for the reset to finish, then refresh any open browser tabs.
This command destroys all database records and managed uploads on that installation. Never point a demo installation at a production database or production media disk.
If a reset fails, the site stays in maintenance mode to protect it from a half-finished state. Check storage/logs/laravel.log, fix the reported cause, and run the reset again. A successful retry brings the site back online.