Short-form Syntax

Write column definitions as space-separated strings for compact schemas:

# String with modifiers
"email": "string required unique"
# equivalent to:
"email": { "type": "string", "required": true, "unique": true }

# With default
"streak": "int default 0"
"is_active": "bool default true"

# Reference to another table
"user_id": "ref users required"

# Reference with cascade delete
"post_id": "ref posts required on_delete cascade"

# Indexed column
"slug": "string required index"
enum type always requires object form because you need to specify the values array.

Full example

{
  "tables": {
    "users": {
      "columns": {
        "name": "string required",
        "bio": "text",
        "avatar": "file",
        "streak": "int default 0"
      },
      "auth_table": true
    },
    "habits": {
      "columns": {
        "user_id": "ref users required on_delete cascade",
        "name": "string required",
        "color": "string default #3b82f6",
        "archived": "bool default false"
      },
      "access": { "read": "owner", "create": "authenticated", "update": "owner", "delete": "owner" },
      "owner_field": "user_id"
    },
    "completions": {
      "columns": {
        "habit_id": "ref habits required on_delete cascade",
        "user_id": "ref users required",
        "date": "date required"
      },
      "access": { "read": "owner", "create": "authenticated", "update": "owner", "delete": "owner" },
      "owner_field": "user_id",
      "unique": [["habit_id", "date"]]
    }
  }
}