Zum Inhalt springen

Registry-Web-Service

Die Registry wird aktuell als statischer plugins.json-Index ausgeliefert, der über GitHub Pages bereitgestellt wird. Der Registry-Web-Service ist die nächste Phase: ein Go-Backend, das registry.semrel.io mit umfangreicheren Discovery- und Verwaltungsfunktionen versorgen wird.

Bessere Erkennung

Eine REST-API macht es einfacher, Plugins zu suchen, zu filtern, zu paginieren und Plugin-Versionen zu prüfen.

Operative Abläufe

Admin-Endpunkte ermöglichen verwaltete Plugin- und Versions-Updates, statt generierte Dateien von Hand zu bearbeiten.

Zukünftige UI

Das Backend schafft die Grundlage für eine browserbasierte Registry-UI und später ein Admin-Dashboard.

  • Phase 1 (MVP): statische plugins.json, bereitgestellt über GitHub Pages
  • Phase 2: Go-Web-Service plus PostgreSQL-gestützter Speicher auf registry.semrel.io
  • Später: umfangreichere Admin-Abläufe, Moderation und Dashboard-Ansichten
EndpunktZweck
GET /healthZustandsprüfung für Load Balancer und Deployment-Verifikation
GET /api/v1/pluginsPlugins mit Paginierung und optionalen Filtern category, search und sort auflisten
GET /api/v1/plugins/:idEin einzelnes Plugin anhand numerischer ID oder Plugin-Name abrufen
GET /api/v1/plugins/:id/versionsVersionen eines Plugins mit limit und offset auflisten
POST /api/v1/pluginsEinen Plugin-Datensatz erstellen (Admin-Token erforderlich)
PUT /api/v1/plugins/:idPlugin-Metadaten aktualisieren (Admin-Token erforderlich)
DELETE /api/v1/plugins/:idEin Plugin per Soft-Delete löschen (Admin-Token erforderlich)
POST /api/v1/plugins/:id/versionsEinen Plugin-Versionsdatensatz erstellen (Admin-Token erforderlich)
GET /api/v1/admin/statusPlatzhalter-Endpunkt für Admin-Status für zukünftige Dashboard-Arbeit

Das aktuelle Backend-Grundgerüst nutzt:

  • Go + Gin für die HTTP-API
  • PostgreSQL 16 für persistente Plugin- und Versionsdaten
  • golang-migrate zum automatischen Ausführen von SQL-Migrationen beim Start
  • Docker für lokale Entwicklung und Builds von Container-Images

Wichtige Laufzeiteinstellungen:

VariableZweck
PORTHTTP-Listenadresse
DATABASE_URLPostgreSQL-Verbindungszeichenfolge
MIGRATE_DIRMigrationsverzeichnis, das beim Start geladen wird
ENVIRONMENTLaufzeitmodus wie dev oder prod
ADMIN_TOKENBearer-Token, das Admin-Endpunkte schützt

Für die lokale Entwicklung startest du PostgreSQL über docker compose und führst die API mit go run main.go aus.

Terminal-Fenster
docker compose up -d
cp .env.example .env
go run main.go
curl http://localhost:8080/health

Für eine spätere Phase ist ein browserbasiertes Admin-Dashboard geplant. Die erwarteten Ziele sind:

  • Plugin-Datensätze verwalten, ohne generierte Dateien direkt zu bearbeiten
  • Versionen, Prüfsummen und Kompatibilitätsmetadaten prüfen
  • Moderation und operative Sichtbarkeit für Registry-Maintainer unterstützen

Aktuell enthält die API die Backend-Grundlagen und eine Platzhalter-Route GET /api/v1/admin/status, die sich parallel zur Dashboard-Arbeit weiterentwickeln wird.