fragdenrat/README.md
2025-08-19 10:09:31 +02:00

157 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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