beantownbabeandClaude Sonnet 4.6 f54b55674c Add GDPR consent to email modal and data governance document
- Email modal now shows a plain-language GDPR data notice before the
  input field, with an explicit consent checkbox that must be ticked
  before the submit button becomes active
- Added DATA_GOVERNANCE.md covering legal basis, purpose, retention,
  data subject rights, and deletion deadlines for audit compliance

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 16:19:56 +02:00

Conference Poll — Hi-Acts 3rd Network Meeting

Developed by TXproducts | June 2026


What this is

A self-paced live polling web app for the Hi-Acts 3rd Network Meeting at DESY Hamburg (10 June 2026).

Attendees scan a QR code, answer 10 questions on their phone, and can view live results afterwards. Results update automatically every 2.5 seconds.


File structure

conference_poll/
├── app.py                  Main server file (questions, routes, logic)
├── requirements.txt        Python dependencies
├── static/
│   ├── attend_qr.png       QR code image shown on the join slide (replace before go-live)
│   └── logo.svg            TXproducts logo
└── templates/
    ├── poll.html           Attendee poll page (phone/tablet friendly)
    ├── join.html           QR code beamer slide (desktop, shown on projector)
    ├── display.html        Live results page (bubble chart + per-question analysis)
    ├── question_view.html  Single question bubble chart (linked from display page)
    └── admin.html          Internal raw results view (not public-facing)

Pages

URL Purpose Who sees it
/ Attendee poll Everyone who scans the QR
/join QR code slide Shown on projector/beamer
/display Live results with bubble chart Anyone with the link
/q/1 — /q/10 Per-question bubble chart Linked from display page
/admin Raw response counts Internal only

How to run locally (for testing)

Requirements: Python 3.10 or higher

cd conference_poll
pip3 install -r requirements.txt
python3 app.py

Then open http://localhost:5001 in a browser.


Deployment instructions

  1. Upload the entire conference_poll/ folder to the server

  2. Install dependencies:

    pip3 install -r requirements.txt
    pip3 install gunicorn
    
  3. Run with Gunicorn (production-grade server):

    gunicorn -w 2 -b 0.0.0.0:80 app:app
    

    Or on port 443 with SSL if HTTPS is configured.

  4. The app will be accessible at the server's public IP or domain.

Before go-live checklist

  • Generate a new QR code pointing to the live URL (e.g. https://poll.txproducts.de)
  • Replace static/attend_qr.png with the new QR code image
  • Update the URL pill in templates/join.html (search for poll.txproducts.de)
  • Restrict access to /admin so it is not publicly accessible (basic auth or IP whitelist)
  • Consider adding a database for persistent storage (see note below)

Important: data persistence

Currently all responses are stored in memory. If the server restarts during the event, all data is lost.

For production, the answers dictionary in app.py should be replaced with a simple SQLite or PostgreSQL database. The relevant section is clearly marked in app.py with the comment "IN-MEMORY DATA STORE".


Security notes

  • The /admin page has no authentication. Restrict it at the server level before deployment.
  • The Flask secret_key in app.py should be changed to a long random string for production.
  • The demo routes (/demo/stream, /demo/status, /submit_demo) are safe to leave in but can be removed if preferred.

Changing questions (content owner: TXproducts)

Questions are defined in app.py in the QUESTIONS list. The web dev team does not need to touch these. The TXproducts team manages question content directly.

After any question change, the QUESTIONS array in templates/display.html (inside the <script> tag) must also be updated to match. Both lists are clearly commented.


Contact

Developed by McKinley Black, TXproducts internship 2026. Questions: mblack@txproducts.de

S
Description
No description provided
Readme
323 KiB
0 Stars 0 Watchers 0 Forks
Languages
HTML 67.1%
Python 32.9%