Eine Webseite, welche dabei hilft den BesucherInnenverkehr in verschiedenen Räumlichkeiten aufzuzeichnen. Die verfügbaren Räume sowie Veranstaltungen, werden von einer Nextcloudkalenderinstanz abgeholt und durch BenutzerInneneingaben ergänzt. Es gibt verschieden Ansichtsmöglichkeiten
  • PHP 78.8%
  • JavaScript 10.6%
  • CSS 8.5%
  • Shell 1.9%
  • Hack 0.2%
Find a file
2026-02-04 00:11:19 +01:00
config Erste stabile Version 2026-02-04 00:11:19 +01:00
docs Erste stabile Version 2026-02-04 00:11:19 +01:00
public Erste stabile Version 2026-02-04 00:11:19 +01:00
scripts Erste stabile Version 2026-02-04 00:11:19 +01:00
src Erste stabile Version 2026-02-04 00:11:19 +01:00
tools Erste stabile Version 2026-02-04 00:11:19 +01:00
.gitignore Erste stabile Version 2026-02-04 00:11:19 +01:00
AGENTS.md Erste stabile Version 2026-02-04 00:11:19 +01:00
CHANGELOG.md Erste stabile Version 2026-02-04 00:11:19 +01:00
composer.json Erste stabile Version 2026-02-04 00:11:19 +01:00
composer.lock Erste stabile Version 2026-02-04 00:11:19 +01:00
LICENSE Erste stabile Version 2026-02-04 00:11:19 +01:00
README.md Erste stabile Version 2026-02-04 00:11:19 +01:00

Rezeption Verwaltungstool

Webbasiertes PHP-Portal für Rezeptionsbereiche. Synchronisiert Nextcloud-Kalender (Veranstaltungen/Räume) in eine MySQL-Datenbank und stellt Tagesprogramm, Raumlisten sowie Besucher-Tracking zur Verfügung.

Features

  • Navigationsbasiertes Frontend („Rezeptionstool P13“) mit Start, Tagesprogramm, Raumliste und Besucher*innen-Überblick inklusive hero¬formatierter Tag-Uhr-Zeitangabe
  • Nextcloud-DAV-Anbindung über Guzzle zur Terminabfrage pro Raum (Kalender)
  • Speicherung von Veranstaltungen (Name, Beschreibung, Zeiten, Kalendername) in MySQL
  • Tagesprogramm-Ansicht mit chronologischer Liste und klickbaren Veranstaltungszeilen, inklusive Inline-Tooltip und Reload-Modus über /api/sync
  • Besucherformular mit Pflichtfeldern Name/Anmeldung, optional Abmeldung/Kommentar, Speicherung per Raum + inline Editierbarkeit + CSV-Export über Zeitraum
  • Besucher*innen-Ansicht mit Datumsbereich-Auswahl, Filterung, Tabelle mit Datumsspalte und Hinweis zum Zeitfenster
  • Installationsskript für notwendige Tabellen
  • Konfigurierbare Debug-Logs unter logs/

Systemanforderungen

  • PHP >= 8.1 mit Erweiterungen: PDO_MYSQL, cURL, JSON
  • Composer >= 2
  • MySQL 8 (oder kompatibel) mit UTF8MB4
  • Zugriff auf Nextcloud-Instanz mit DAV-API und Kalendernamen
  • Webserver (Apache/Nginx) oder php -S für Entwicklung

Projektstruktur

config/            # Konfigurationsdatei config.php
public/            # Öffentlicher Webroot (index.php, assets, api.php)
src/               # PHP-Business-Logik (Controller, Service, Repository, View)
scripts/install.php# DB-Migrations/Installationsskript
tools/             # Hilfs-/Debugskripte (früher `tmp/`)
logs/              # Log-Ausgaben (app.log, install.log)
composer.json      # Abhängigkeiten & Autoloading

Installation

  1. Repository bereitstellen

    git clone <repo-url> rezeption
    cd rezeption
    composer install
    
  2. Konfiguration anpassen

    • Datei config/config.php mit echten Werten versehen:
      • nextcloud.base_url, nextcloud.username, nextcloud.password
      • nextcloud.calendars (Raumnamen)
      • database.host, database.port, database.name, database.username, database.password
    • Optional: debug und timezone setzen
  3. Datenbanktabellen anlegen

    php scripts/install.php
    

    Skript erzeugt Tabellen events und visitors inkl. Relationen.

  4. Webserver konfigurieren

    • Webroot auf public/ legen
    • Rewrite-Regeln für „schöne“ URLs (oder Router via index.php verwenden)
    • Alternativ für Entwicklung:
      composer start
      # öffnet http://localhost:8000
      
  5. Nextcloud-Sync planen

    • Rezeption\Service\EventSyncService mit gewünschtem Datum aufrufen (z.B. CLI-Skript oder Cronjob), um aktuelle Veranstaltungen abzurufen und in die DB zu schreiben.

Debugging

  • Allgemeiner Logger: logs/app.log
  • Installationsskript-Log: logs/install.log
  • config['debug'] = true aktiviert zusätzliche Debug-Ausgaben.

API-Endpunkte

  • POST /api/visitors speichert Besucher (JSON: event_id, room_name, name, arrival_time, optional departure_time/comment)
  • POST /api/visitors/inline aktualisiert einzelne Felder per Inline-Editing (JSON: id, field, value)

Cronjobs / Zeitgesteuerte Aufgaben

  • 0 05 * * * cd /pfad/zur/app && php scripts/sync.php synchronisiert täglich um 05:00 Uhr alle Nextcloud-Kalender.
  • 0 06 * * * cd /pfad/zur/app && php scripts/cleanup_visitors.php löscht ältere Besucher auf Basis von config.retention_days.

Weitere Schritte

  • Deployment auf Zielsystem inkl. HTTPS/Reverse-Proxy
  • Scheduler/Command für regelmäßige Nextcloud-Synchronisation implementieren und einplanen
  • Suche-Funktion in Navigation ausbauen (derzeit Platzhalter)

Dokumentation

  • docs/vision.md beschreibt Anforderungen, Vision und Umsetzung für künftige KI-Weiterarbeit.
  • CHANGELOG.md dokumentiert alle wichtigen Änderungen.

Lizenz

Dieses Projekt steht unter der Lizenz GPL-3.0-or-later. Der komplette Quelltext darf frei genutzt, geändert und weitergegeben werden, solange der Lizenztext beiliegt und die Änderungen ebenfalls unter GPL-3.0-or-later stehen.