Skip to content

Registry Web Service

The registry currently ships as a static plugins.json index served from GitHub Pages. The Registry Web Service is the next phase: a Go backend that will power registry.semrel.io with richer discovery and management features.

Better discovery

A REST API makes it easier to search, filter, paginate, and inspect plugin versions.

Operational workflows

Admin endpoints unlock managed plugin and version updates instead of editing generated files by hand.

Future UI

The backend creates a foundation for a browser-based registry UI and later an admin dashboard.

  • Phase 1 (MVP): static plugins.json served through GitHub Pages
  • Phase 2: Go web service plus PostgreSQL-backed storage on registry.semrel.io
  • Later: richer admin workflows, moderation, and dashboard views
EndpointPurpose
GET /healthHealth check for load balancers and deployment verification
GET /api/v1/pluginsList plugins with pagination and optional category, search, and sort filters
GET /api/v1/plugins/:idFetch a single plugin by numeric ID or plugin name
GET /api/v1/plugins/:id/versionsList versions for a plugin with limit and offset
POST /api/v1/pluginsCreate a plugin record (admin token required)
PUT /api/v1/plugins/:idUpdate plugin metadata (admin token required)
DELETE /api/v1/plugins/:idSoft-delete a plugin (admin token required)
POST /api/v1/plugins/:id/versionsCreate a plugin version record (admin token required)
GET /api/v1/admin/statusPlaceholder admin status endpoint for future dashboard work

The current backend skeleton uses:

  • Go + Gin for the HTTP API
  • PostgreSQL 16 for persistent plugin and version data
  • golang-migrate to run SQL migrations automatically at startup
  • Docker for local development and container image builds

Important runtime settings:

VariablePurpose
PORTHTTP listen address
DATABASE_URLPostgreSQL connection string
MIGRATE_DIRMigration directory loaded on startup
ENVIRONMENTRuntime mode such as dev or prod
ADMIN_TOKENBearer token protecting admin endpoints

Local development starts PostgreSQL through docker compose and runs the API with go run main.go.

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

A browser-based admin dashboard is planned for a later phase. The expected goals are:

  • manage plugin records without editing generated files directly
  • review versions, checksums, and compatibility metadata
  • support moderation and operational visibility for registry maintainers

For now, the API contains the backend foundations and a placeholder GET /api/v1/admin/status route that will evolve alongside the dashboard work.