# Fragify Eine einfache Web-Anwendung, um vorausgefüllte Links für Anfragen bei [FragDenStaat.de](https://fragdenstaat.de) zu generieren, die du an Freund:innen schicken kannst. ## Was ist Fragify? Fragify ist ein webbasiertes Tool, das es dir ermöglicht, schnell und einfach Anfragen bei deutschen Behörden über das Informationsfreiheitsportal FragDenStaat.de zu erstellen. Du kannst: - Nach Behörden suchen und auswählen - Betreff und Inhalt der Anfrage vorausfüllen - Einen fertigen Link generieren, der alle Informationen enthält - Den Link mit anderen teilen, die dann nur noch auf "Senden" klicken müssen ## Installation ### NixOS Füge das Modul zu deiner `flake.nix` hinzu: ```nix { inputs = { fragify.url = "git+https://git.project-insanity.org/onny/fragify.git"; [...] }; outputs = {self, nixpkgs, ...}@inputs: { nixosConfigurations.tuxzentrale = inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs.inputs = inputs; modules = [ inputs.fragify.nixosModule ({ pkgs, ... }:{ nixpkgs.overlays = [ inputs.fragify.overlay ]; }) ./configuration.nix ]; }; }; } ``` Füge dies zu deiner `configuration.nix` hinzu: ```nix services.fragify = { enable = true; }; ``` ### Von der Quelle ```bash cd fragify nix develop nix run ``` Öffne dann deinen Browser und navigiere zu: http://localhost:8000 ## Verwendung 1. **Behörde auswählen**: Suche und wähle die gewünschte Behörde aus dem Dropdown-Menü 2. **Betreff eingeben**: Gib einen aussagekräftigen Betreff für deine Anfrage ein 3. **Anfrage beschreiben**: Beschreibe detailliert, welche Dokumente oder Informationen du anfragen möchtest 4. **Link generieren**: Klicke auf "Anfrage Link generieren" 5. **Link teilen**: Kopiere den generierten Link und teile ihn mit anderen ## Technische Details - **Framework**: Falcon (Python) - **Frontend**: Bootstrap 5 mit modernem Design - **API**: Integration mit der FragDenStaat.de API - **Styling**: Responsive Design mit Gradient-Hintergrund ## Frontend-Assets (lokal statt CDN) Die Anwendung kann CSS/JS-Assets lokal bereitstellen. Dafür werden `npm` und `gulp` benutzt. ### Bauen der Assets ```bash # Abhängigkeiten installieren (nutzt npm ci, wenn package-lock.json existiert) make build # Alternativ ohne make npm install npm run build ``` Die gebauten Dateien landen in `assets/` und werden vom Server unter `/static/...` ausgeliefert: - CSS: `/static/css/bootstrap.min.css`, `/static/css/select2.min.css`, `/static/css/select2-bootstrap-5-theme.min.css` - JS: `/static/js/bootstrap.bundle.min.js`, `/static/js/jquery.min.js`, `/static/js/select2.min.js` ### Hinweis - Stelle sicher, dass `assets/` existiert, sonst werden stattdessen CDN-Links erwartet. - In der Entwicklungs-Serverausgabe steht: "Serving static assets from: ..." – dort solltest du den Pfad zu `assets/` sehen. ## Deployment mit Nix/uWSGI - Das Nix-Paket installiert Templates und (falls vorhanden) `assets/` nach `$out/share/fragify/...`. - Das NixOS-Modul startet uWSGI und erzeugt einen UNIX-Socket unter `unix:${config.services.uwsgi.runDir}/fragify.sock`. - Die App respektiert folgende Umgebungsvariablen: - `FRAGIFY_TEMPLATES_DIR` – Pfad zu den Templates - `FRAGIFY_STATIC_DIR` – Pfad zu den statischen Assets (`assets/`) Beispiel (im uWSGI-Instance Block): ```nix services.uwsgi.instance.fragify = { env = { FRAGIFY_TEMPLATES_DIR = "${pkgs.fragify}/share/fragify/templates"; FRAGIFY_STATIC_DIR = "${pkgs.fragify}/share/fragify/assets"; }; }; ``` ## Entwicklung ### Lokale Entwicklung ```bash # Entwicklungsumgebung starten nix develop # Anwendung starten python fragify.py ``` ### Abhängigkeiten - Python 3.8+ - Falcon (Web-Framework) - Requests (HTTP-Client) - Node.js + npm (für lokale Assets) - gulp (wird via npm-Script genutzt) ## Lizenz Dieses Projekt steht unter der gleichen Lizenz wie FragDenStaat.de. ## Beitragen Beiträge sind willkommen! Bitte erstelle einen Pull Request oder öffne ein Issue. ## Links - [FragDenStaat.de](https://fragdenstaat.de) - Das Hauptportal - [FragDenStaat API](https://fragdenstaat.de/api/) - API-Dokumentation - [Informationsfreiheitsgesetz](https://fragdenstaat.de/informationsfreiheit/) - Rechtliche Grundlagen