theaio/theaio-boards
Laneway, team task boards you can run from Claude or ChatGPT. FastAPI + DataK3 + appid + Models + MCP.
A remix template · 0 remixes · Remix theaio/theaio-boards
migrations/001_board_upgrade.sql
-- Brings a bucket made by the original starter schema up to schema.sql. Additive only: the
-- starter's tables and rows stay as they are. Run each statement once against the bucket over
-- the Postgres wire (`dodil data connect <repo>-data` prints the endpoint).
-- (CREATE TABLE IF NOT EXISTS skips a table it finds, so new columns are explicit ALTERs.)
-- Old boards get their list rows and old cards their numbers the first time the app loads them
-- (SqlBoards._adopt_starter_board).
ALTER TABLE cards ADD COLUMN num BIGINT;
ALTER TABLE cards ADD COLUMN list_id TEXT;
ALTER TABLE cards ADD COLUMN description TEXT;
ALTER TABLE cards ADD COLUMN labels TEXT;
ALTER TABLE cards ADD COLUMN pos BIGINT;
ALTER TABLE cards ADD COLUMN created_by TEXT;
ALTER TABLE cards ADD COLUMN created_at TIMESTAMP;
CREATE TABLE IF NOT EXISTS lists (
id TEXT PRIMARY KEY,
board_id TEXT NOT NULL,
name TEXT NOT NULL,
pos BIGINT NOT NULL
);
CREATE TABLE IF NOT EXISTS card_history (
id TEXT PRIMARY KEY,
board_id TEXT NOT NULL,
card_id TEXT NOT NULL,
actor TEXT NOT NULL,
changed_at TIMESTAMP NOT NULL,
field_name TEXT NOT NULL,
old_value TEXT,
new_value TEXT
);
CREATE TABLE IF NOT EXISTS card_links (
id TEXT PRIMARY KEY,
board_id TEXT NOT NULL,
card_id TEXT NOT NULL,
blocked_by TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS card_embeddings (
card_id TEXT PRIMARY KEY,
board_id TEXT NOT NULL,
digest TEXT NOT NULL,
embedding VECTOR(2048)
);