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
);