Skip to content

kyozai.json

kyozai.jsonは、buildされたstatic assetsとkyoz.ai Platformの界面を定義します。Applicationのsource rootへ置きます。

Static assetsと開始path

json
{
  "$schema": "https://kyoz.ai/schemas/application-v1.json",
  "schemaVersion": 1,
  "artifacts": {
    "assets": "dist"
  },
  "paths": {
    "learner": "/quiz.html",
    "instructor": "/dashboard.html"
  }
}
  • artifacts.assets: browserへ配信するbuild成果物のdirectory
  • paths.learner: 受講者として開くpath
  • paths.instructor: 教員として開くpath

artifacts.assetskyozai.jsonからのrelative pathです。learnerinstructorは配信されるassetsのrootから始まるpathで、両方を指定します。

Platform機能

Applicationが使う機能をcapabilitiesへ指定します。

json
{
  "capabilities": [
    "personal-objects",
    "application-database"
  ]
}
  • personal-objects: MembershipごとのObjectを保存する
  • application-database: migrationで定義したtableをCourse内で利用する

browser codeからの利用方法はPlatform APIを参照してください。

Application Database

json
{
  "capabilities": ["application-database"],
  "database": {
    "migrations": ["migrations/001-progress.sql"],
    "tables": {
      "progress": {
        "scope": "membership",
        "key": ["item_id"]
      }
    }
  }
}

migrationsは適用順にSQL fileを並べます。tablesにはAPIから利用するtableとscopeを定義します。

  • membership: Membershipごとの行。Course memberは専用APIで自身の行をupsert・deleteできる
  • course: Course全体のtable。教員がSQL APIから利用する

membership scopeでは、Application内で行を識別するcolumnをkeyへ指定します。migration側のtableにはmembership_id columnを設け、membership_idkeyを一意にします。

Browser egress

Applicationが外部originへ接続する場合は、送信先をorigin単位で指定します。

json
{
  "egress": {
    "browser": [
      "https://cdn.jsdelivr.net",
      "https://files.pythonhosted.org"
    ]
  }
}

指定していない外部originへのbrowser通信は失敗します。pathを含めず、httpまたはhttpsのoriginを指定します。