157 lines
4.2 KiB
Markdown
157 lines
4.2 KiB
Markdown
# 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
|