BezelIQ Studio blueprint
internal prototype · canonical JSON + Dreamborn Forge HTML
internal generated
blueprint · supabase_json

BezelIQ Studio blueprint

blueprint artifact · for BezelIQ Studio · status approved

Planning Surface

Use this to decide what happens next.

Status

approved

Agent Handoff
Start Here

blueprint artifact · for BezelIQ Studio · status approved

Completion Evidence

No explicit evidence field yet. Require tests, screenshots, linked PRs, or reviewed outputs before marking complete.

Artifact Shape
  • api: auth: string, notes: string, base_url: string, endpoints: object
  • stack: backend: string, hosting: string, database: string, frontend: string, external_services: object
  • schema: notes: string, tables: object
  • routing: notes: string, routes: object
  • version: 1
  • services: env_vars: object, dependencies: object
  • project id: bezeliq-studio
  • updated at: 2026-04-28
Structured Payload

Machine-readable source fields

api
auth

apikey: VITE_SUPABASE_ANON_KEY header on all requests

notes

BezelIQ Studio is a pure Supabase frontend — no custom API server. All data operations are Supabase REST table queries. Exec gate actions post to hcs-post-server.

base url

https://tseqkbyqyrctrkihllss.supabase.co/rest/v1

endpoints
pathmethodrequestresponsedescriptionauth required
/projects?client_id=eq.{clientId}&order=created_at.descGET- body: - params: client_id: string- 200: rows: string - errors: 0 itemsList all projects for a client — Studio home viewfalse
/studio_artifacts?project_id=eq.{projectId}GET- body: - params: project_id: string- 200: rows: string - errors: 1 itemFetch all artifacts for a project — project detail view artifact statusfalse
/studio_artifactsPOST- body: status: string, content: string, phase_id: string, project_id: string, artifact_type: string - params: - 200: id: string, created_at: string - errors: 1 itemCreate a new artifact — called on intake completion (intent) or agent task output (blueprint, spec, policy)false
/studio_artifacts?id=eq.{artifactId}PATCH- body: status: string, content: string, updated_at: string, approved_at: string, approved_by: string - params: id: string- 200: updated: boolean - errors: 1 itemUpdate artifact content or approval statusfalse
/agent_tasks?project_id=eq.{projectId}&role=eq.exec&status=eq.assignedGET- body: - params: project_id: string- 200: rows: string - errors: 0 itemsFetch pending exec gate tasks for a project — exec gate approval viewfalse
http://87.99.154.64:3001/post-hcs-messagePOST- body: message: object, topicId: string - params: - 200: ok: boolean, status: string - errors: 1 itemPost exec gate approval or rejection as HCS message — triggers Engine to advance or holdfalse
stack
backend

Supabase REST + Realtime (no custom API server)

hosting

Cloudflare Pages — bezeliq.ai primary domain

database

Supabase Postgres — RedKey instance (tseqkbyqyrctrkihllss)

frontend

Vue 3 + Vite + Vue Router 4

external services
authnamepurpose
Anon key for reads; service role key never in frontend — exec gate actions via hcs-post-serverSupabaseDatabase (studio_artifacts + existing platform tables), Realtime subscriptions, OAuth provider (v2)
No auth — VPS network-only in v1hcs-post-serverPOST exec gate approvals and rejections as HCS messages — runs on VPS port 3001
noneDreamborn Forge CSSDesign system — self-hosted from dreamborn-design-system repo, imported as static asset
schema
notes

Only new tables documented here. Existing platform tables (projects, agent_tasks, stages, phases, inbox, agent_state) are defined in RedKey migrations and are read-only from Studio's perspective.

tables
rlsnamecolumnsindexesdescription
Read: anon allowed. Write: anon allowed in v1 (no auth enforcement). Revisit when Supabase OAuth is enabled.studio_projects- id: Primary key — generated UUID, not an HCS topic ID - title: Human-readable project name entered at intake - client_id: Client scope — populated from VITE_CLIENT_ID at intake time - status: Studio lifecycle state: intake | designing | ready | dispatched. Not the same as platform project status. - platform_project_id: Set when the project is dispatched to the RedKey platform and an HCS topic is created. Null for all pre-dispatch Studio projects. - created_at: Row creation timestamp - updated_at: Last update — maintained on every PATCH- item: unique: boolean, columns: object - item: unique: boolean, columns: objectStudio-managed projects created at intake time. These are pre-dispatch — they do not have HCS topic IDs yet. Separate from the platform's projects table to avoid polluting HCS-anchored entities with Studio drafts.
Read: anon allowed (no sensitive content). Write: authenticated only in v2. In v1: service role via backend script or anon with open policy — revisit when auth enforced.studio_artifacts- id: Primary key - project_id: FK to studio_projects.id — the Studio-managed project this artifact belongs to - artifact_type: One of: intent | blueprint | spec | policy - phase_id: Only populated for artifact_type=spec — identifies which phase this spec belongs to - content: The full artifact JSON — matches the template schema for each artifact_type - status: Approval state: draft | approved | rejected - version: Incremented on each content update — enables history without separate versions table in v1 - approved_by: Identity of approver — 'justin' in v1, user_id in v2 when auth is enforced - item: unique: boolean, columns: object - item: unique: boolean, columns: objectStores all four SDD artifacts per project. One row per artifact per version. Studio reads and writes this table directly.
routing
notes

Vue Router 4, history mode. Platform shell wraps all routes with persistent nav.

routes
pathcomponentdescriptionprops
/StudioHomePlatform home — studio picker
/devDevStudioHomeDev Studio — project list
/dev/newDevIntakeNew project intake form
/dev/:projectIdDevProjectProject detail — artifact status dashboard
/dev/:projectId/intentArtifactViewINTENT.json rendered view + editor- type: intent
/dev/:projectId/blueprintArtifactViewBLUEPRINT.json rendered view + editor- type: blueprint
/dev/:projectId/spec/:phaseIdArtifactViewSPEC.json rendered view + editor for a specific phase- type: spec
/dev/:projectId/policyArtifactViewPOLICY.json rendered view + editor- type: policy
/dev/:projectId/buildDevBuildViewBuild progress — reads agent_tasks for this project
version

1

services
env vars
nameexamplerequireddescription
VITE_SUPABASE_URLhttps://tseqkbyqyrctrkihllss.supabase.cotrueRedKey Supabase project URL
VITE_SUPABASE_ANON_KEYeyJhbG...trueSupabase anon key — safe for frontend, read-only access with RLS
VITE_HCS_POST_URLhttp://87.99.154.64:3001/post-hcs-messagetrueVPS hcs-post-server endpoint for exec gate actions
VITE_CLIENT_IDbezeliqtrueActive client scope for project list — filters projects by client_id
dependencies
namepurposeversion
vueFrontend framework3.x
vue-routerClient-side routing4.x
viteBuild tool and dev server5.x
@supabase/supabase-jsSupabase client — REST queries and Realtime subscriptions2.x
project id

bezeliq-studio

updated at

2026-04-28