Skip to content

Tracking: zero-friction first project (dev mode) and multi-project console #18

Description

@STRRL

Tracking issue for the growth roadmap: make the first project easy to start, then provide an operator-native dashboard for managing projects.

Motivation

A SupabaseProject needs PostgreSQL and S3-compatible storage. Keeping those services external to the operator is the right lifecycle boundary, but users still need a short and proven path to a working Studio.

The original Phase A proposed managed PostgreSQL and MinIO inside the operator. We decided not to implement that direction. Database and storage provisioning, upgrades, credentials, recovery, and data lifecycle would make the operator much larger and harder to maintain.

Phase A now provides a verified quickstart using existing operators and charts. Phase B adds our own dashboard on top of SupabaseProject resources.

Phase A: verified first project

Goal: a user on a fresh cluster follows one short guide and reaches a working Studio in under 5 minutes.

Direction

  • Do not add managed database or managed storage fields to SupabaseProject.
  • Keep PostgreSQL and S3-compatible storage external to Supabase Operator.
  • Install PostgreSQL with CloudNativePG using the supabase/postgres image, postgresUID: 101, postgresGID: 102, and superuser access.
  • Install object storage with the official MinIO chart in standalone mode.
  • Keep ready-to-apply manifests in the repository.
  • Use the same existing Secret contracts and database initialization path.

The decision and tradeoffs are recorded in ADR 0001.

Tasks

  • Record the decision to use existing charts instead of managed mode.
  • Add CloudNativePG, MinIO, Secret, and SupabaseProject manifests.
  • Validate the complete path on a fresh kind cluster.
  • Confirm PostgreSQL TLS, MinIO bucket creation, project readiness, and Studio access.
  • Add a concise docs/quickstart.md using the checked-in manifests.
  • Add a short README link to the quickstart.

Implementation and validation landed in PR #19.

Phase B: operator dashboard

Goal: installing the Helm chart always provides our dashboard. Users can open it and manage SupabaseProject resources without installing or enabling another feature.

Product behavior

  • Dashboard is installed by default with Supabase Operator.
  • There is no console.enabled or similar feature flag.
  • The default Service is ClusterIP. Initial access uses kubectl port-forward.
  • No public Ingress is created by default.
  • SupabaseProject resources and Kubernetes Secrets remain the source of truth.
  • Dashboard has no database of its own.

Architecture

  • Backend: REST API over the Kubernetes API.
  • Frontend: static SPA served as part of the dashboard.
  • Packaging: always included in the existing Helm chart.
  • Initial access control: users need Kubernetes access to reach the ClusterIP service through port-forward. Public access and multi-user authentication are separate future work.

Pages and workflows

  • Project list: namespace, name, phase, and component health.
  • Project detail: conditions, component status, endpoints, and API keys with reveal action.
  • Create wizard: create a SupabaseProject from existing database and storage Secrets.
  • Delete project: remove a SupabaseProject with explicit confirmation.

The dashboard does not provision PostgreSQL or MinIO. The create wizard points users to the Phase A quickstart when dependency Secrets are not ready.

Tasks

  • Always-on dashboard HTTP service and static application.
  • REST API for listing projects and reading status.
  • Project list page.
  • Project detail page with endpoints and API keys.
  • Create and delete project API.
  • Create wizard using existing Secret references.
  • Helm Service, RBAC, and dashboard access documentation.

Non-goals for the first dashboard MVP

  • Managed PostgreSQL or MinIO.
  • Multi-user management or organizations.
  • Metrics dashboards.
  • Public Ingress or a separate authentication system.

Success metrics

  • Phase A: a new user reaches a working Studio in under 5 minutes from a fresh cluster.
  • Phase B: after Helm install, port-forwarding the dashboard Service shows the current SupabaseProject list and health.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions