Demo data + screenshots (voor docs-contributors)

Bijgewerkt op 2026-04-22

Wil je deze handleiding verrijken met screenshots? Dit artikel legt uit hoe je lokaal een demo-environment opzet met realistische fake data zodat je veilig kan screenshotten zonder echte gastgegevens.

Waarom een aparte demo DB?

  • Privacy: echte gastnamen + emails mogen nooit in screenshots belanden
  • Veiligheid: geen echte emails, Telegrams, Channex pushes tijdens het klikken
  • Reproduceerbaar: iedereen die de docs bijwerkt heeft dezelfde dataset

Setup in 3 commando's

1. Genereer de demo-database

php artisan demo:setup

Dit creëert database/demo.sqlite met:

  • 1 admin user (demo@bedflow.eu / demo123)
  • 4 kamers (Kamer 1–4 met realistische prijzen)
  • 10 producten (wellness, honesty bar, extras)
  • 25 debiteuren met fake Belgische namen (Jan Jansen, Marie Dupont, Sophie De Smet, …)
  • ~40 boekingen verdeeld over verleden, heden, toekomst
  • Proforma facturen met variabele betaalstatus (onbetaald / voorschot / volledig)
  • Kalenderdata (booked + available cells)
  • 3 housekeepers (Cindy V., Asra M., Els B.) + 2 weken schema
  • 10 email automatisaties — allemaal enabled=false (veiligheidsrail)
  • Settings met redelijke defaults + alle externe API's leeg

2. Configureer .env.demo

cp .env.demo.example .env.demo
# Pas DB_DATABASE aan naar het absolute pad van je demo.sqlite
php artisan key:generate --env=demo

3. Start de demo-server

php artisan serve --env=demo --port=8001

Open http://localhost:8001 en login met demo@bedflow.eu / demo123.

Screenshots nemen

Welke tool je ook gebruikt (Mac Cmd+Shift+5, ShareX, een puppeteer script, …) — save de screenshots naar:

public/docs/images/{categorie}/{artikel-slug}.png

En voeg in de frontmatter van het bijhorende .md bestand toe:

---
title: …
screenshot: docs/images/03-boekingen/handmatig-boeking-aanmaken.png
---

Veiligheidsrails

De demo data seeder zorgt dat:

  1. Geen enkele email automation is enabled — er vertrekt dus niks tijdens het klikken
  2. MAIL_MAILER=log in .env.demo — zelfs als per ongeluk een Mail::send() zou vuren landt het in storage/logs/laravel.log, niet in een echte mailbox
  3. Externe credentials leeg — Stripe, Channex, Telegram, TextMeBot kunnen geen calls doen
  4. QUEUE_CONNECTION=sync — jobs runnen inline, geen Redis nodig, geen stale async state

Resetten

php artisan demo:setup

Wipet en hermaakt alles.

Production protection

De command weigert te draaien in APP_ENV=production. Als je toch absoluut-zeker-moet: --force. Doe dit nooit op tourist.openview.be.