Ei kuvausta

Medowar f49aaf34a1 anpassung texte, Sonderzeichen 4 päivää sitten
admin d65cf215e3 adding form generation for minor-parent signature 1 viikko sitten
api eb7766d692 fixing frontend and backend validator not beeing aligned 4 päivää sitten
assets eb7766d692 fixing frontend and backend validator not beeing aligned 4 päivää sitten
config f49aaf34a1 anpassung texte, Sonderzeichen 4 päivää sitten
docs f49aaf34a1 anpassung texte, Sonderzeichen 4 päivää sitten
lib e579b75d99 cleaning up pdf creation by reducing amount of fonts 1 kuukausi sitten
src f49aaf34a1 anpassung texte, Sonderzeichen 4 päivää sitten
storage a70a2915da removing ratelimiting, only adding honeypot form as protection 1 viikko sitten
.codex a70a2915da removing ratelimiting, only adding honeypot form as protection 1 viikko sitten
.gitignore 4a1ebda112 Revert "improving mail sending. implementing pdf creation. temp added composer.." 1 kuukausi sitten
.htaccess 5e5a308fa5 unifying htaccess. 1 kuukausi sitten
index.php eb7766d692 fixing frontend and backend validator not beeing aligned 4 päivää sitten
readme.md a70a2915da removing ratelimiting, only adding honeypot form as protection 1 viikko sitten
todo.md 9e5b4cd84b Updating Docs 1 viikko sitten

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)
  • Dateiupload startet sofort nach Auswahl (kein separater Speicher-Button nötig)
  • 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)
  • Erste Seite zeigt einen konfigurierbaren Disclaimer vor Formularstart

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)
  • admin/cleanup.php tägliche Bereinigung
  • docs/ AI-first Dokumentation
  • .htaccess Apache-Schutz und Routing

Setup (Shared Hosting)

Detaillierte Schritt-für-Schritt-Anleitung: docs/initial_setup.md

  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. Lokale Konfiguration aus Samples erzeugen:
    • cp config/app.sample.php config/app.local.php
    • cp config/mail.sample.php config/mail.local.php
  6. Konfiguration anpassen:
    • config/app.local.php (Admin-Credentials, Kontakt, Disclaimer, Retention)
    • config/mail.local.php (Absender, Empfänger)
  7. Admin-Credential setzen:
    • Auf Server: php -r "echo password_hash('DEIN-PASSWORT', PASSWORD_DEFAULT), PHP_EOL;"
    • Ergebnis in config/app.local.php -> admin.credentials[*].password_hash
    • Benutzername in config/app.local.php -> admin.credentials[*].username
  8. Cronjob einrichten (täglich):
    • php /pfad/zum/projekt/admin/cleanup.php

Hinweis:

  • config/app.php und config/mail.php sind stabile Loader-Dateien im Repo.
  • config/*.sample.php sind versionskontrollierte Vorlagen.
  • config/*.local.php sind lokale Produktivdateien und werden per .gitignore nicht versioniert.

Sicherheitshinweise

  • CSRF aktiv auf POST-Endpunkten.
  • Honeypot (Feld website) aktiv.
  • Uploads werden auf Typ, MIME und Größe geprüft.
  • Interne Ordner (config, src, storage, docs, lib) 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/initial_setup.md
  • docs/form_schema.md
  • docs/operations.md
  • docs/auth_integration.md