Nincs leírás

Medowar ed8b1f5d94 adding ignores to gitignore in storage 1 hónapja
admin 252ab0b5d9 fixing relative path loading 1 hónapja
api 0f07ac43b7 reworking Status 1 hónapja
assets 252ab0b5d9 fixing relative path loading 1 hónapja
bin 4b7c21d08e initial 1 hónapja
config 58a2454557 updating docs on config file change 1 hónapja
docs 16422c4322 adding assets for styling 1 hónapja
scripts 252ab0b5d9 fixing relative path loading 1 hónapja
src 252ab0b5d9 fixing relative path loading 1 hónapja
storage 252ab0b5d9 fixing relative path loading 1 hónapja
.gitignore ed8b1f5d94 adding ignores to gitignore in storage 1 hónapja
.htaccess 4b7c21d08e initial 1 hónapja
README.md 58a2454557 updating docs on config file change 1 hónapja
index.php 252ab0b5d9 fixing relative path loading 1 hónapja

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)
  • 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. 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-Passwort, Kontakt, Disclaimer, Retention, Rate Limit)
    • config/mail.local.php (Absender, Empfänger)
  7. Admin-Hash setzen:
    • Auf Server: php -r "echo password_hash('DEIN-PASSWORT', PASSWORD_DEFAULT), PHP_EOL;"
    • Ergebnis in config/app.local.php -> admin.password_hash
    • Danach password_plain_fallback entfernen/leer setzen.
  8. Cronjob einrichten (täglich):
    • php /pfad/zum/projekt/bin/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 + Rate Limit aktiv.
  • Rate Limit fuer Tests deaktivierbar ueber config/app.local.php -> rate_limit.enabled = false.
  • 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