Sem descrição

Josef Straßl bdd257dad6 Implement upload functionality with file selection and camera capture options; add disclaimer section and improve form layout. Update styles for better mobile responsiveness. há 1 mês atrás
admin 4b7c21d08e initial há 1 mês atrás
api 0f07ac43b7 reworking Status há 1 mês atrás
assets bdd257dad6 Implement upload functionality with file selection and camera capture options; add disclaimer section and improve form layout. Update styles for better mobile responsiveness. há 1 mês atrás
bin 4b7c21d08e initial há 1 mês atrás
config ea464ef450 adding config for testing há 1 mês atrás
docs bdd257dad6 Implement upload functionality with file selection and camera capture options; add disclaimer section and improve form layout. Update styles for better mobile responsiveness. há 1 mês atrás
src bdd257dad6 Implement upload functionality with file selection and camera capture options; add disclaimer section and improve form layout. Update styles for better mobile responsiveness. há 1 mês atrás
storage 4b7c21d08e initial há 1 mês atrás
.htaccess 4b7c21d08e initial há 1 mês atrás
README.md bdd257dad6 Implement upload functionality with file selection and camera capture options; add disclaimer section and improve form layout. Update styles for better mobile responsiveness. há 1 mês atrás
index.php bdd257dad6 Implement upload functionality with file selection and camera capture options; add disclaimer section and improve form layout. Update styles for better mobile responsiveness. há 1 mês atrás

README.md

Feuerwehr digitaler Antrag (MVP)

Schlankes PHP-Flatfile-Projekt für einen digitalen Mitgliedsantrag (deutsches Frontend).

Allgemeine Prinzipien

  • Mobile first und responsive für alle Seiten/Ansichten.
  • Frontend-Sprache ist Deutsch.
  • Architektur so einfach wie möglich bei vollständiger Zielerfüllung.

Features

  • Mehrstufiges Wizard-Formular
  • Autosave + Wiederaufnahme über E-Mail
  • E-Mail wird im Browser gemerkt und Formular beim Besuch automatisch geladen
  • Genau ein Antrag pro E-Mail
  • Uploads mit Original-Dateiname in kurzem Zufallsordner
  • Upload-Felder bieten „Datei auswählen“ und „Foto aufnehmen“ (mobil optimiert)
  • Selbstbedienung: Gespeicherte Daten zur aktuellen E-Mail löschen und neu starten
  • Abschlussversand per E-Mail (intern + Antragsteller)
  • Admin-Bereich mit Login, Detailansicht, Download einzeln/ZIP, Löschen
  • Cleanup per Cron (Entwürfe 14 Tage, Submissions 90 Tage)

Projektstruktur

  • index.php im Projekt-Root als Einstiegspunkt
  • api/, admin/, assets/ direkt im Projekt-Root
  • src/ PHP-Logik
  • config/ Konfiguration
  • storage/ Datenablage (JSON, Uploads, Logs)
  • bin/cleanup.php tägliche Bereinigung
  • docs/ AI-first Dokumentation
  • .htaccess Apache-Schutz und Routing

Setup (Shared Hosting)

  1. Projekt hochladen.
  2. Apache verwenden (mit aktiviertem mod_rewrite) und AllowOverride All für das Projekt sicherstellen.
  3. Document Root auf das Projekt-Root setzen.
  4. Schreibrechte für storage/ sicherstellen (mind. Webserver-User).
  5. Konfiguration anpassen:
    • config/app.php (Admin-Passwort, Kontakt, Retention, Rate Limit)
    • config/mail.php (Absender, Empfänger)
  6. Admin-Hash setzen:
    • Auf Server: php -r "echo password_hash('DEIN-PASSWORT', PASSWORD_DEFAULT), PHP_EOL;"
    • Ergebnis in config/app.php -> admin.password_hash
    • Danach password_plain_fallback entfernen/leer setzen.
  7. Cronjob einrichten (täglich):
    • php /pfad/zum/projekt/bin/cleanup.php

Sicherheitshinweise

  • CSRF aktiv auf POST-Endpunkten.
  • Honeypot + Rate Limit aktiv.
  • Uploads werden auf Typ, MIME und Größe geprüft.
  • Interne Ordner (config, src, storage, bin, docs) werden per .htaccess blockiert.

Wichtige URLs

  • Formular: /
  • Admin Login: /admin/login.php
  • Admin Übersicht: /admin/index.php

Entwicklung

Lokale PHP-Laufzeit wird benötigt (CLI + Webserver), um Syntaxchecks/Tests auszuführen.

Weiterführende Doku

  • docs/AI_OVERVIEW.md
  • docs/FORM_SCHEMA.md
  • docs/OPERATIONS.md
  • docs/RATE_LIMITING.md