Database Schema Architecture
OpenBoard utilizes embedded SQLite with synchronous better-sqlite3 bindings to manage multi-board workspaces. The database is organized into clean relational tables:
boards: Stores board UUIDs, titles, descriptions, creation timestamps, and soft-delete (Trash) status flags.shapes: Stores individual shape records, x/y spatial coordinates, dimensions, types (box, text, arrow, frame), and JSON properties.bindings: Stores directional arrow bindings connecting source and target shapes.assets: Stores embedded vector SVGs, image assets, and custom icon definitions.
Write-Ahead Logging (WAL)
OpenBoard enables SQLite WAL Mode by default:
- Concurrent Access: CLI commands, terminal AI agents over MCP, and browser UI websockets can read and write concurrently without locking conflicts.
- Crash Safety: In case of sudden machine reboot or terminal interruption, pending transactions are safely recovered from the WAL journal.
Backups & Migration
Because all data lives in a single SQLite file at ~/.openboard/openboard.db, backing up or moving your entire workspace is trivial:
bash# Create an instant timestamped backup cp ~/.openboard/openboard.db ~/Backups/openboard-$(date +%Y%m%d).db # Inspect database size and integrity sqlite3 ~/.openboard/openboard.db "PRAGMA integrity_check;"