No description
  • JavaScript 73.7%
  • CSS 11%
  • HTML 8%
  • Python 6.3%
  • Nix 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-21 22:35:57 +02:00
assets test responsiveness 2026-10-21 16:29:03 +02:00
templates fix mobile view 2026-10-21 22:35:57 +02:00
.gitignore Hot Reload für nix run ergänzen 2026-10-21 14:27:29 +02:00
dev_server.py Hot Reload für nix run ergänzen 2026-10-21 14:27:29 +02:00
favicon.svg update module 2025-08-20 13:59:25 +02:00
flake.lock update flake 2026-10-21 10:45:07 +02:00
flake.nix Nix-Modul und DevShell korrigieren 2026-10-21 14:55:43 +02:00
gulpfile.js TinyMCE, Dark Mode und Fraktionssuche integrieren 2026-10-21 14:27:29 +02:00
Makefile add SEO 2025-08-19 10:09:31 +02:00
meinantrag.py E-Mail-Text und Templatesuche überarbeiten 2026-10-21 14:27:29 +02:00
module.nix Nix-Modul und DevShell korrigieren 2026-10-21 14:55:43 +02:00
package-lock.json TinyMCE, Dark Mode und Fraktionssuche integrieren 2026-10-21 14:27:29 +02:00
package.json TinyMCE, Dark Mode und Fraktionssuche integrieren 2026-10-21 14:27:29 +02:00
README.md Hot Reload für nix run ergänzen 2026-10-21 14:27:29 +02:00

MeinAntrag

Eine einfache Web-Anwendung, um vorausgefüllte Links für Anfragen bei FragDenStaat.de zu generieren, die du an Freund:innen schicken kannst.

Was ist MeinAntrag?

MeinAntrag 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:

{
  inputs = {
    meinantrag.url = "git+https://git.project-insanity.org/onny/meinantrag.git";
    [...]
  };

  outputs = {self, nixpkgs, ...}@inputs: {

    nixosConfigurations.tuxzentrale = inputs.nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs.inputs = inputs;
      modules = [
        inputs.meinantrag.nixosModule

        ({ pkgs, ... }:{

          nixpkgs.overlays = [
            inputs.meinantrag.overlay
          ];

        })

        ./configuration.nix

      ];
    };
  };
}

Füge dies zu deiner configuration.nix hinzu:

services.meinantrag = {
  enable = true;
};

Von der Quelle

cd meinantrag
nix run

Öffne dann deinen Browser und navigiere zu: http://localhost:8000

nix run startet den Entwicklungsserver mit Hot Reload. Änderungen an meinantrag.py, templates/ und assets/ starten den Server automatisch neu. Für einen Lauf mit den gebauten Store-Dateien (ohne Hot Reload) kannst du nix run .#meinantrag verwenden.

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

# 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/meinantrag/....
  • Das NixOS-Modul startet uWSGI und erzeugt einen UNIX-Socket unter unix:${config.services.uwsgi.runDir}/meinantrag.sock.
  • Die App respektiert folgende Umgebungsvariablen:
    • MEINANTRAG_TEMPLATES_DIR – Pfad zu den Templates
    • MEINANTRAG_STATIC_DIR – Pfad zu den statischen Assets (assets/)
    • GEMINI_MODEL – Gemini-Modell für die Antragserstellung (Standard: gemini-3.8-flash, kostenlos nutzbar; gemini-4-argon für das Flaggschiff-Modell)
    • GEMINI_TIMEOUT_MS – Timeout für Gemini-Anfragen in Millisekunden (Standard: 180000)

Beispiel (im uWSGI-Instance Block):

services.uwsgi.instance.meinantrag = {
  env = {
    MEINANTRAG_TEMPLATES_DIR = "${pkgs.meinantrag}/share/meinantrag/templates";
    MEINANTRAG_STATIC_DIR = "${pkgs.meinantrag}/share/meinantrag/assets";
  };
};

Entwicklung

Lokale Entwicklung

# Anwendung mit Hot Reload starten
nix run

# Alternativ explizit den Entwicklungs-App-Eintrag verwenden
nix run .#dev

Der Entwicklungsserver beobachtet meinantrag.py, templates/ und assets/. Bei Änderungen wird der Server automatisch neu gestartet. Statische Assets werden weiterhin separat mit npm run build gebaut.

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.