Skip to content

App Deployments (2/N): admin catalog + cluster management API#215

Merged
v0l merged 1 commit into
masterfrom
feat/app-deployments-admin
Jul 24, 2026
Merged

App Deployments (2/N): admin catalog + cluster management API#215
v0l merged 1 commit into
masterfrom
feat/app-deployments-admin

Conversation

@v0l

@v0l v0l commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Second increment of the managed App Deployments epic (see work/app-deployments.md). Builds on the DB foundation (#214). Admin-only surface; no customer endpoints yet.

What

  • New app admin permission (AdminResource::App = 26) + RBAC migration granting app::* to super_admin.
  • Catalog CRUDGET/POST /api/admin/v1/apps, GET/PATCH/DELETE /api/admin/v1/apps/{id}. Each app carries a docker-compose-style compose YAML plus inline subscription pricing.
  • Cluster CRUDGET/POST /api/admin/v1/app_clusters, GET/PATCH/DELETE /api/admin/v1/app_clusters/{id}. Each cluster binds to a region (which provides the billing company) and an ingress domain.

Validation

  • DNS-safe unique slug; required display_name/compose/currency; currency upper-cased.
  • Cluster create/update checks the referenced region exists.
  • Delete refused while deployments still reference the app/cluster (disable instead).
  • Full compose schema validation is intentionally deferred to the operator (increment 4), which owns the compose→k8s mapping.

Tests / docs

  • Unit test for validate_app_fields (all branches).
  • e2e admin CRUD test: create/read/list/update/delete for apps + clusters, duplicate-name and invalid-slug/unknown-region rejection, and auth enforcement on the new endpoints.
  • ADMIN_API_ENDPOINTS.md + API_CHANGELOG.md updated.

Next

  1. customer API (order → subscription/invoice, list/status) · 4) operator reconcile · 5) seed relay + Blossom.

Increment 2 of the App Deployments epic. Admin-only CRUD for the managed
app catalog and the clusters apps deploy to.

- AdminResource::App = 26 (Display/FromStr/TryFrom/all) + RBAC migration
  granting app::* to super_admin.
- Endpoints:
  - GET/POST /api/admin/v1/apps, GET/PATCH/DELETE /api/admin/v1/apps/{id}
  - GET/POST /api/admin/v1/app_clusters, GET/PATCH/DELETE .../{id}
- Apps carry a docker-compose-style compose YAML + inline subscription
  pricing; clusters bind to a region (billing company) + ingress domain.
- Validation: DNS-safe slug, required display_name/compose/currency,
  currency upper-cased, region existence checked on cluster create/update;
  delete refused while deployments exist. Full compose schema validation is
  deferred to the operator.
- Unit test for validate_app_fields; e2e admin CRUD test (apps + clusters,
  duplicate/invalid rejection, auth enforcement).
- ADMIN_API_ENDPOINTS.md + API_CHANGELOG.md.

Part of work/app-deployments.md.
@v0l
v0l merged commit c689269 into master Jul 24, 2026
8 checks passed
@v0l
v0l deleted the feat/app-deployments-admin branch July 24, 2026 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant