When closed, the public request page shows a "booth closed" message instead of the form.
❌ {{ health.message }}
{% if health.missing_columns %}Missing columns: {{ health.missing_columns | join(', ') }}
{% endif %} {% if health.missing_tables %}Missing tables: {{ health.missing_tables | join(', ') }}
{% endif %} {% else %}✅ {{ health.message }}
{% endif %}Total requests: {{ total_records }}
Database size: {{ db_size }}
Uploaded MP3s: {{ upload_file_count }} files in {{ upload_dir_count }} request folders
Uploads total size: {{ upload_size }}
{% if status_counts %}Status breakdown:
Database path:
{{ db_path }}
Uploads path:
{{ upload_path }}
Set how the public /kiosk page cycles. Use -1 for QR only, 0 for pricing only, or 5+ seconds to cycle between them.
Set via Portainer env var HERMES_API_KEY. Used for callback auth.
Current key: {{ hermes_key_masked }}
⚠️ No Hermes API key is configured. Set the HERMES_API_KEY environment variable in Portainer before using the callback workflow.
{% endif %}These settings are used to send confirmation, preview, and delivery emails to customers. The password is stored encrypted using the Flask secret key.
These values are written into every uploaded MP3 file. The song title from the prompt is written to the Title tag automatically. Blank fields are skipped.
Download a copy of the SQLite database before the event. Upload a previous backup to restore it; the current database will be renamed as a timestamped backup.
Download all uploaded MP3 and archived revision files as a single ZIP.
Use this only at the start of a new event. It will delete every request and every uploaded MP3 file. This cannot be undone.