akif/arclet-boards

Arclet Boards — private Kanban workspaces with AppID, DataK3, shared web and MCP actions.

A remix template · 1 remixes · Remix akif/arclet-boards

schema.sql

-- Arclet tables preserve the starter's existing tables and source history.
-- DataK3 pg wire; explicit application-generated primary keys, no sequences.
CREATE TABLE IF NOT EXISTS arclet_workspaces (
  id TEXT PRIMARY KEY,
  title TEXT NOT NULL,
  owner_sub TEXT NOT NULL,
  owner_email TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL,
  version INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_workspace_memberships (
  id TEXT PRIMARY KEY,
  workspace_id TEXT NOT NULL REFERENCES arclet_workspaces(id),
  email TEXT NOT NULL,
  user_sub TEXT,
  role TEXT NOT NULL,
  invited_by TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_boards (
  id TEXT PRIMARY KEY,
  workspace_id TEXT NOT NULL REFERENCES arclet_workspaces(id),
  title TEXT NOT NULL,
  description TEXT NOT NULL,
  color TEXT NOT NULL,
  owner_sub TEXT NOT NULL,
  owner_email TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL,
  version INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_board_memberships (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  email TEXT NOT NULL,
  user_sub TEXT,
  role TEXT NOT NULL,
  invited_by TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_board_lists (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  title TEXT NOT NULL,
  position INTEGER NOT NULL,
  is_done BOOLEAN NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL,
  version INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_cards (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  list_id TEXT NOT NULL REFERENCES arclet_board_lists(id),
  title TEXT NOT NULL,
  description TEXT NOT NULL,
  assignee TEXT,
  due_date DATE,
  position INTEGER NOT NULL,
  created_by TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL,
  version INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_card_labels (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  card_id TEXT NOT NULL REFERENCES arclet_cards(id),
  name TEXT NOT NULL,
  color TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_card_activity (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  card_id TEXT NOT NULL REFERENCES arclet_cards(id),
  actor_sub TEXT NOT NULL,
  actor_email TEXT NOT NULL,
  action TEXT NOT NULL,
  changes_json TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_card_checklist_items (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  card_id TEXT NOT NULL REFERENCES arclet_cards(id),
  title TEXT NOT NULL,
  completed BOOLEAN NOT NULL,
  position INTEGER NOT NULL,
  created_at TIMESTAMP NOT NULL,
  updated_at TIMESTAMP NOT NULL,
  version INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_card_dependencies (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  card_id TEXT NOT NULL REFERENCES arclet_cards(id),
  depends_on_id TEXT NOT NULL REFERENCES arclet_cards(id),
  created_by TEXT NOT NULL,
  created_at TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_commands (
  id TEXT PRIMARY KEY, actor_sub TEXT NOT NULL, action TEXT NOT NULL,
  payload_hash TEXT NOT NULL, board_id TEXT, workspace_id TEXT,
  permission TEXT NOT NULL, result_json TEXT NOT NULL, created_at TIMESTAMP NOT NULL
);
CREATE TABLE IF NOT EXISTS arclet_card_embeddings (
  id TEXT PRIMARY KEY,
  board_id TEXT NOT NULL REFERENCES arclet_boards(id),
  card_id TEXT NOT NULL REFERENCES arclet_cards(id),
  content_hash TEXT NOT NULL,
  model TEXT NOT NULL,
  dimensions INTEGER NOT NULL,
  embedding VECTOR(512) NOT NULL,
  updated_at TIMESTAMP NOT NULL
);