# 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. Konfiguration anpassen: - `config/app.php` (Admin-Passwort, Kontakt, Disclaimer, 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`