Work / Scrvio / Wiki / Surfaces
storage
Surfacecanonicalverified 2026-10-04
SURFACE.WEB.STORAGESummary
A workspace's storage providers, its usage, and the upgrade gate for cloud storage.
Raw wireframe
- .context/designs/web/workspace/storage.html
- .context/designs/web/workspace/storage-empty.html
- .context/designs/web/workspace/storage-locked.html
Why it is drawn this way
The gate is two conditions. The yellow card and the disabled Add button both use !hasPaidPlan && hasLocalStorage. hasPaidPlan means a Pro or Team licence whose status is ACTIVE.
An empty free workspace is not locked. With no Local config the gate is false, so the Add button works on any plan. The client does not stop a free workspace choosing a cloud provider there.
Pro passes the gate. The billing page lists Bring your own S3 storage under Team only. This page accepts Pro as well.
The limit line never shows. StorageUsageCard prints of X limit only when quotaBytesLimit is set. The server creates usage rows with null and setQuotaLimit has no caller, so only the used figure is drawn.
Edit and delete are not drawn. Edit reopens the same form as Edit Storage Provider with the provider locked. Delete opens a ConfirmDialog titled Delete Storage Config. Set Default shows on every non-default card.
View Plans is a plain anchor. It is an <a>, not a Next Link, so it reloads the page on the way to billing.
No way back to the workspace. There is no breadcrumb or back link.
Related
Sources
- apps/website/src/app/workspace/[id]/storage/page.tsx
- apps/website/src/components/storage/storage-config-card.tsx
- apps/website/src/components/storage/storage-usage-card.tsx
- apps/server/src/api/06-storage/storage-usage.service.ts