Lösungen · Institutionen & Verwaltung
Die Abschnitte, die der Regierungsbeschluss verlangt, im Code geschrieben und vom Mitarbeiter aktualisiert — nicht am Ende hinzugefügt, wie ein Anhang.
Ein Rathaus oder eine Institution hat eine feste Liste obligatorischer Abschnitte, eine Pflicht zur Entscheidungstransparenz und einen Mitarbeiter, der eine Ankündigung veröffentlichen muss, ohne einen Programmierer anrufen zu müssen. Wir bauen genau das, mit einem Audit-Log, das sich fristgerecht selbst löscht, und mit einer Begrenzung der Authentifizierungsversuche.
Bereits gebautZwei eigene Plattformen, öffentlich und heute überprüfbar. Die erste ist die offizielle Website einer Gemeindeverwaltung: Laravel 12 auf PHP 8.2 mit MySQL 8, 40 Vorlagen, 32 Routen, 10 Migrationen, wobei der selten wechselnde redaktionelle Inhalt in einer einzigen Konfigurationsdatei mit 1.613 Zeilen gehalten wird und der häufig wechselnde Inhalt in der Datenbank, vom Panel aus bearbeitbar; die Anmeldung im Panel ist auf 5 Anfragen pro Minute begrenzt, und das Audit-Log wird täglich nach 12 Monaten gelöscht, mit ausdrücklichem Verweis auf die gesetzliche Grundlage. Die Security-Header können Sie von außen gerade jetzt lesen. Die zweite ist eine zivile Plattform in Produktion, mit 65 Schnittstellenrouten, über 50 Migrationen, 103 Testdateien auf Serverseite und 59 End-to-End-Szenarien, mit Barrierefreiheitsprüfung in den Tests. Was wir nicht als „geliefert“ angeben: die Interoperabilität mit staatlichen Diensten — der Code für föderierte Authentifizierung und elektronische Signatur ist geschrieben und getestet, aber gestoppt, weil der Vertrag mit der Behörde und das Systemzertifikat fehlen.
Eine Website einer öffentlichen Institution wird nicht danach beurteilt, wie sie aussieht, sondern nach einer Liste. Der Regierungsbeschluss 728/2023 legt fest, welche Abschnitte vorhanden sein müssen: Entscheidungstransparenz, Projekte und Beschlüsse, Ankündigungen, Dokumente, Kontakte, Budget. Sie sind obligatorisch, werden geprüft und sind nicht verhandelbar. Deshalb bauen wir sie von Anfang an als Struktur und fügen sie nicht am Ende hinzu — am Schluss hinzugefügt wirken sie formell und unbrauchbar, und das sieht man sofort.
Die zweite Bedingung ist praktischer: Die Institution muss selbst veröffentlichen können. Eine Ausschreibungsankündigung, ein zur Konsultation gestellter Beschlussentwurf, ein Foto von einer Veranstaltung — wenn alles durch einen Entwickler laufen muss, bleibt die Information von öffentlichem Interesse auf Papier oder in einer sozialen Netzwerkgruppe, und die Website wird zu einer toten Vitrine. Wir haben bewusst zwei Arten von Inhalten getrennt: der redaktionelle Inhalt, der sich selten ändert — Geografie, Geschichte, Institutionen, Kontakte, Budget — steht in einer einzigen Konfigurationsdatei, die direkt von den Vorlagen gelesen wird; der Inhalt, der sich oft ändert, steht in der Datenbank und wird im Panel bearbeitet.
Die dritte Bedingung ist die, nach der im Leistungsverzeichnis niemand fragt: Was geschieht mit den Daten. Ein öffentliches Verwaltungs-Panel braucht eine Begrenzung der Authentifizierungsversuche — bei der sechsten Anfrage innerhalb einer Minute von derselben Adresse lautet die Antwort 429, und das ist durch einen automatischen Test abgedeckt, nicht angenommen. Das Audit-Log enthält IP-Adressen, also personenbezogene Daten: Ein geplanter Task löscht täglich alles, was älter als zwölf Monate ist, mit der rechtlichen Grundlage im Kommentar des Codes geschrieben, nicht in einem separaten Dokument, das niemand öffnet.
Und schließlich der Teil, über den wir lieber vor der Ausschreibung sprechen: die Interoperabilität mit staatlichen Diensten. Die föderierte Authentifizierung und die elektronische Signatur sind bei uns geschrieben und getestet, aber per Schalter abgeschaltet, weil der Vertrag mit der Behörde und das Systemzertifikat fehlen — das Papier fehlt, nicht der Code. Für die staatliche Zahlungsplattform, den Interoperabilitäts-Bus und das Bürgerkonto haben wir in keinem Repository Code, und wir schreiben das auch so.