Complete guide to using the Package Repo
This is a schema-driven package repository with secure, content-addressed artifact storage backed by PostgreSQL and a C++ Drogon backend.
# Build and start with the manager CLI
./manager repo build
./manager repo up
# Or use Docker Compose directly
cd tools/packagerepo
docker compose up -d
# Frontend: http://localhost:3000
# Backend: http://localhost:5050
# Endpoints: /health, /v1/*, /admin/*./manager repo build # Build backend image
./manager repo up # Start stack (DB + backend)
./manager repo down # Stop stack
./manager repo status # Show container status
./manager repo logs # Tail backend logsMost endpoints require a Bearer token. Get one via the login endpoint:
curl -X POST http://localhost:5050/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}'
# Response: { "token": "...", "user": {...} }
# Use token in subsequent requests:
Authorization: Bearer YOUR_TOKENcurl -X PUT \
-H "Authorization: Bearer $TOKEN" \
--data-binary @package.tar.gz \
http://localhost:5050/v1/acme/myapp/1.0.0/linux-amd64/blobcurl -H "Authorization: Bearer $TOKEN" \
http://localhost:5050/v1/acme/myapp/1.0.0/linux-amd64/blob \
-o myapp.tar.gzcurl -H "Authorization: Bearer $TOKEN" \
http://localhost:5050/v1/acme/myapp/latestcurl -H "Authorization: Bearer $TOKEN" \
http://localhost:5050/v1/acme/myapp/versionscurl http://localhost:5050/v1/packagescurl -X PUT \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_version":"1.0.0","target_variant":"linux-amd64"}' \
http://localhost:5050/v1/acme/myapp/tags/stableThe repository uses a declarative schema stored in PostgreSQL to define its behavior:
View the full schema configuration in the Admin panel or at the /schema endpoint.