No description
  • Python 54.2%
  • Vue 33.5%
  • TypeScript 9.4%
  • Shell 2.4%
  • Nix 0.2%
  • Other 0.2%
Find a file
2026-05-07 23:12:35 +02:00
.github continously generate lessons of things that ai might foget 2026-03-31 18:39:10 +02:00
.vscode settings.json 2026-04-01 14:44:50 +02:00
backend fix: use forgejos run_number for build url 2026-04-27 12:54:17 +02:00
contrib Set predecessor_release_id of vH4 to null in hannover_import.yaml for import compatibility 2026-04-02 22:33:51 +02:00
docs feat: add %BRANCH to forgejo workflow 2026-04-23 23:13:35 +02:00
frontend feat: filter "nicht mehr verfügbar" releases by default 2026-05-07 23:12:35 +02:00
lessons Align frontend editing with global edit mode 2026-04-02 21:21:28 +02:00
scripts fix: do not skip unknown versions for branches in sync publish states 2026-04-24 02:30:28 +02:00
.env.example feat: add %BRANCH to forgejo workflow 2026-04-23 23:13:35 +02:00
.gitignore Store frontend test output in tmp 2026-04-02 20:15:44 +02:00
docker-compose.yml fix: restart docker containers for frontend & backend 2026-04-22 10:33:59 +02:00
README.md docs: README mit Features, Quick Start und Vibecoding-Hinweis überarbeitet 2026-04-02 23:35:55 +02:00
shell.nix Add Playwright repro tests for save history 2026-04-02 04:16:30 +02:00
TODO retry tools build 2026-04-03 00:23:16 +02:00

Gluon Release Manager

Webbasiertes Release-Management-Tool fuer Gluon-Firmwares.

Hinweis: Dieses Projekt ist fast vollstaendig vibecoded der Code wurde ueberwiegend durch KI-gestuetzte Entwicklung mit GitHub Copilot erzeugt.

Features

  • Release-Planung Releases mit Vorgaengerbeziehungen, Branches und Status (planned, in development, released, closed) verwalten
  • Versionierung Pre-Release- und Final-Versionen mit Gluon- und Site-Commits anlegen
  • Build-Integration Firmware-Builds direkt aus dem UI ueber Forgejo Actions starten und Build-Status live verfolgen
  • Gluon-Upstream-Sync Automatischer Abgleich von Gluon-Upstream-Releases und -Branches per Worker
  • Site-Branch-Cache Lokaler Cache der Site-Repository-Branches fuer Commit-Auswahl im UI
  • Publish-State-Tracking Automatische Erkennung, ob eine Version auf dem Firmware-Server verfuegbar ist
  • OIDC-Login Authentifizierung ueber OpenID Connect; oeffentliche Daten sind ohne Login lesbar, Schreibzugriffe erfordern Anmeldung
  • Dev-Modus Lokale Entwicklung ohne OIDC mit einem konfigurierbaren Dev-User
  • Release Notes Pro Release und Version pflegbar, mit Vergleichsansichten
  • Signatur-Tracking Anzahl der Signaturen pro Version wird automatisch aus dem Firmware-Manifest gelesen

Struktur

  • backend/ FastAPI REST API
  • frontend/ Vue.js / Vuetify UI
  • scripts/ Worker-Skripte fuer Sync, Import und Build-Abgleich
  • contrib/ Beispieldaten (z.B. hannover_import.yaml)
  • docs/ Planungs- und Architekturdokumente
  • lessons/ Dauerhafte Lessons Learned
  • data/ Lokale SQLite-Daten (nicht im Git)

Quick Start

1. Repository klonen und .env anlegen

git clone <repo-url>
cd gluon-release-manager
cp .env.example .env   # oder eigene .env anlegen

Die wichtigsten Variablen fuer den Start:

Variable Zweck
OIDC_ENABLED false fuer lokale Entwicklung ohne Login
PUBLIC_BASE_URL Oeffentliche URL (z.B. https://releases.example.org)
FORGEJO_WORKFLOW_ENABLE true um Build-Integration zu aktivieren
WORKER_GLUON_URL URL des Gluon-Upstream-Repos

Alle Variablen sind in docs/environment.md dokumentiert.

2. Starten

docker compose up --build

Der Stack startet drei Services:

  • Frontend http://localhost:4173
  • Backend http://localhost:8000
  • Worker periodische Sync-Jobs (Gluon-Upstream, Site-Cache, Build-Status, Publish-State)

3. Beispieldaten importieren

Zum Import bestehender Releases (z.B. aus dem Freifunk Hannover Wiki):

nix-shell --run 'python scripts/import_releases.py --api-base-url http://127.0.0.1:8000 contrib/hannover_import.yaml'

Alternativ koennen Seed-Daten ueber die API geladen werden:

nix-shell --run 'python scripts/seed_api_data.py --api-base-url http://127.0.0.1:8000'

Wenn OIDC aktiv ist, legt Docker Compose automatisch einen gemeinsamen Worker-Schreibtoken unter data/worker-api-token an. Die Import-Skripte verwenden diese Datei automatisch.

Konfiguration

Alle Umgebungsvariablen sind in docs/environment.md beschrieben.

Tests

Alle Tests werden innerhalb der nix-shell ausgefuehrt (siehe shell.nix).

Backend-Tests (unittest + FastAPI TestClient):

./scripts/run-backend-tests.sh

Frontend-Tests (Playwright E2E):

nix-shell --run './scripts/run-frontend-tests.sh'

Details zu Testumgebung und Umgebungsvariablen: docs/testing.md