コンテンツにスキップ

データベーステンプレート

テンプレートを使うと、クリックひとつでデータベース全体を作成できます。テーブルとそのリレーション、サンプル行、ビュー、ダッシュボード、オートメーション、そしてAIが自動で埋めるフィールドまで含まれます。basedbが提供するテンプレートは、テンプレートギャラリーで見られます。

新しいデータベース、続いて テンプレートから始める、またはAIに依頼 を選ぶと、ギャラリーが開きます。

アプリ内のテンプレートギャラリー

各テンプレートは、使う前に全体を確認できます。テーブルとそのフィールド、ビュー、オートメーション、そして各AIフィールドの指示です。データベースを作成を押すとラベルを尋ねられ、AIフィールドがある場合は、それらが引用する値をインスタンスのAIプロバイダーに送ることへの同意を求められます。同意しない場合、それらは通常のフィールドとなり、サンプル値が入ります。

サンプルデータを読み込むは初期状態でオンになっており、データベースの動作を確認できるよう、テーブルにサンプル行を入れます。オフにすると、テーブルは空のまま、自分のデータを入れる準備が整います——ビュー、ダッシュボード、オートメーションはそれでも作成されます。

空のプロジェクトでは、デモデータベースも作成できます。小さなエージェンシーの顧客、プロジェクト、タスク、請求書、レビューが入っており、basedbのあらゆる機能を紹介します。

公式のテンプレートは、画面の言語で読み書きされます:テーブル、フィールド、選択肢、サンプル行、ビュー、ダッシュボード、オートメーション、AIへの指示。サンプル行は、言語とともに舞台も変わります:Lyonの「Boulangerie Martin」は、日本語では大阪の「田中ベーカリー」になります。

インスタンスにインポートされた、またはデータベースから保存されたテンプレートは、誰かが書いたものです:書かれたとおりに読まれます。

ギャラリーの上部で、必要なものを一文で説明します(「顧客からのクレームの管理。トーン分析付き」)。AIが完全なデータベースを提案します:テーブル、現実的なサンプル行、ビュー、ダッシュボード、そして用途に合う場合はAIフィールド。テンプレートと同じように内容を確認し、調整(「仕入先のテーブルを追加して」)してから作成できます。AIが受け取るのは入力した文だけで、どのデータベースのデータも送られません。クリックするまで何も作成されません。

テンプレートはJSONドキュメントです。骨組みは次のとおりです:

{
"format": 1,
"key": "suivi-tickets",
"label": "Suivi de tickets",
"summary": "Une phrase pour la galerie.",
"category": "Produit et technique",
"icon": "bug",
"color": "#ef4444",
"tables": [
{
"key": "tickets",
"label": "Tickets",
"fields": [
{ "label": "Titre", "kind": "short_text" },
{ "label": "Statut", "kind": "select", "options": ["Nouveau", "En cours", "Résolu"] },
{ "label": "Ouvert le", "kind": "date" },
{ "label": "Description", "kind": "long_text" },
{ "label": "Catégorie", "kind": "select", "options": ["Bug", "Demande"],
"ai": { "prompt": "Classe ce ticket : {{Titre}} — {{Description}}" } },
{ "label": "Âge (jours)", "kind": "formula", "formula": "JOURS(AUJOURDHUI(); [Ouvert le])" }
]
},
{ "key": "produits", "label": "Produits", "fields": [{ "label": "Nom", "kind": "short_text" }] }
],
"links": [{ "from": "tickets", "label": "Produit", "to": "produits" }],
"rows": {
"produits": [{ "$key": "app", "Nom": "Application mobile" }],
"tickets": [{ "Titre": "Crash au démarrage", "Statut": "En cours", "Ouvert le": "-3d", "Produit": "@app" }]
},
"views": [
{ "table": "tickets", "label": "Tableau", "kind": "kanban", "spec": { "group_by": "Statut" } }
],
"dashboards": [
{ "label": "Vue d’ensemble", "blocks": [
{ "kind": "number", "title": "Ouverts", "table": "tickets", "filter": "[Statut] ne \"Résolu\"" },
{ "kind": "chart", "title": "Par catégorie", "table": "tickets", "group_by": "Catégorie", "style": "pie" }
] }
],
"automations": []
}

主なルール:

  • すべてラベルで参照します:ビュー内のフィールド、フィルター([Statut] ne "Résolu")、数式([Prix] * [Quantité])、AIの指示やメッセージ({{Titre}})。選択肢も、そのラベルで指定します。
  • テーブルの最初のフィールドが、そのテーブルの表示フィールドになります:テキスト、数値、日付、メールアドレス、またはURL。
  • リレーションはフィールドとしてではなく、linksで宣言します。行からは"@clé"(対象テーブルの行の$key)で参照します。
  • 日付は、テンプレートを適用した日からの相対指定ができます:"today"、"+3d"、"-2w"、"+1m"。日時の場合は時刻を加えます:"+1d 14:30"。メンバーは"$moi"と書きます。
  • AIフィールドは"ai": { "prompt": "…" }を持ち、サンプル値を持たせることもできます。サンプル値は、AIを使わない場合にのみ書き込まれます。
  • テンプレートには、共有、権限、Webhook、ファイル、"$moi"以外のメンバーを決して含めません。テンプレートは外部から持ち込まれることもあるため、何も開放してはならないからです。

完全なリファレンス(すべてのフィールドの型、ビューのキー、上限値)は、リポジトリにあるアーキテクチャ文書の第20章にあります。

すべてのインスタンス向けにテンプレートを公開する

Section titled “すべてのインスタンス向けにテンプレートを公開する”

公式ギャラリーのテンプレートは、リポジトリのpackages/templates/catalogフォルダーにあるファイルです。テンプレートごとに1ファイルで、keyにちなんだ名前が付いています。公開サイトはこれをギャラリーにし、カタログ全体を/basedb/modeles/catalogue.jsonで公開しています。各インスタンスは、誰かがギャラリーを開いたときにこれを読み込み、1時間保持します。ファイルを変更してサイトを再公開するだけで、すべてのインスタンスのギャラリーが変わります。

各テンプレートは、サーバーと同じバリデーターで、サイトのビルド時に検証されます。無効なテンプレートがあるとビルドが失敗するため、ユーザーに届くことはありません。

公式テンプレートはフランス語で一度だけ書かれます。他の言語のテキストは辞書——packages/templates/i18n/<langue>/<clé>.json(フランス語のテキストと、その翻訳)——になっており、サイトはこれをカタログと並べて公開します(/basedb/modeles/i18n/<langue>.json)。インスタンスは各テキストをそこに当てはめ、数式、フィルター、ビュー、指示など、各ラベルが引用されている箇所をすべて追跡したうえで、結果を読み直します:テンプレートを壊してしまう辞書は提供されず、フランス語のテンプレートが提供されます。辞書にないテキストは、フランス語のまま残ります。

インスタンスはBASEDB_TEMPLATES_URLのアドレスを読み込みます。デフォルトは公開サイトのアドレスです。独自のカタログを指定することも、offにして何も読み込まないようにすることもできます。その場合、インスタンスは自身のバージョンに組み込まれたテンプレートを提供します。

インスタンス独自のテンプレート

Section titled “インスタンス独自のテンプレート”

管理者は、ギャラリーから(「JSONをインポート」)JSONテンプレートをインスタンスにインポートできます。インポートしたテンプレートはすべてのユーザーのギャラリーに加わり、同じキーのテンプレートを置き換えます。AIの提案も、クリックひとつで追加できます。

どのデータベースもテンプレートにできます。データベースのメニューのその他の操作にあるテンプレートとして保存を使います。テーブル、フィールド、AIの指示、リレーション、共有ビュー、ダッシュボード、オートメーション、さらに必要に応じてテーブルごとに最大50行がJSONとしてダウンロードされ、公式カタログやインスタンスのカタログにそのまま追加できます。行を検索する、行を繰り返し処理する、分岐する、前のステップを引用するオートメーションは、現時点では含まれず、画面にその旨が表示されます。

basedbは、AIネイティブなソフトウェアスタジオEodiaが開発するフリーソフトウェアです。