/foːɾʲ/Irish, verbto help

エージェントが構築する先のバックエンド。

構造化コンテンツとアプリケーションデータを、まとめて管理します。モデルを定義すれば、API、編集ツール、顧客のサインイン、テナントの分離はFóirが提供します。

Start buildingRead the docs

  1. 構築

    バックエンドは、1つの設定ファイルから始まります。

    自分で書いても、コーディングエージェントに頼んでも構いません。モデル、そのフィールド、顧客のサインイン方法を記述します。

    そこからFóirがAPIを生成します。

    モデル、フィールド、ルックアップ、顧客のサインインは、設定の数行です。1回のプッシュでGraphQL APIになります。

  2. コンソール

    モデルから作られたコンソールで、チームが一緒に編集する。

    すべてのモデルに、型付きフィールド、バージョン、プレビューを備えたエディターが用意されます。複数人が同じレコードで同時に作業でき、互いのカーソルが見えます。

  3. Ask Fóir

    データについて、Ask Fóirに質問する。

    コンソール内のアシスタントが、レコードを横断して集計し、ステップを比較して、分かったことを、使った数値とともに伝えます。

    そのうえで、作業も任せる。

    自分と同じツールで、レコードの検索、書き込み、変更を行い、自分のロールにできないことはできません。書き込んだ内容は下書きとして待機します。

  4. サインインとロール

    サインインは組み込み済みです。

    チームとユーザーに共通の、1つのホスト型ログイン。パスキー、2段階認証、Google、Apple、Shopify、または任意のOIDCプロバイダーでのサインインに対応します。

    1組のユーザーを、プールとロールで管理します。

    プールには、プロジェクトまたは1つの組織にサインインできる人が入ります。メンバーシップによってユーザーにロールが付与され、すべてのロールは同じ権限のリストから構成されます。

  5. レコード

    アプリは、公開用キーで読み取ります。

    自分のホスティング上で動き、誰でも見られる商品をAPIに問い合わせます。

    顧客がサインインし、レコードを1人の顧客のものにできます。

    サインインはFóirがホストします。モデルで、各レコードを所有する顧客だけに非公開にできます。

    書き込みは、2回送っても安全です。

    接続が弱いと、アプリは注文をもう一度送信します。同じ冪等キーが付いているので、Fóirは最初の結果を返し、何も変更しません。

    ほかの誰も読めません。

    2人目の顧客が同じクエリを送っても、何も返りません。ルールはデータベースで適用されるので、チェックを忘れても行が漏れることはありません。

  6. 公開

    コンテンツは、どこからでも編集できます。

    編集者がスマートフォンから画像を追加します。下書きとして保存されるので、アプリには公開済みのページが表示されたままです。

    公開すれば、アプリに反映されます。

    コンテンツはリクエストごとに解決されるので、次の読み取りで新しいバージョンが返ります。再ビルドも再デプロイも不要です。

  7. パーソナライズ

    どのバージョンを各訪問者に返すかを、Fóirが決めます。

    ウェブサイト、アプリ、エージェントが、同じ読み取りを送ります。どのルールにも一致しない訪問者には、デフォルトが返されます。

    誰がリクエストしているかを割り出します。

    所在地はリクエストから、セグメントは顧客のプロフィールから、サーバー上で判断されます。この訪問者はこれまでに£1,000を超えて購入しているため、VIPのエントリーが返されます。

    ルールは組み合わさり、優先順位で決まります。

    この訪問者はパリにいて、以前にランニングシューズを購入しています。3つのエントリーが一致し、そのうち最初のものが返されます。

    バリアントは、1つのフィールドだけを変え、ほかはそのままにできます。

    レコード全体を置き換えることも、1つのフィールドや1つの段落だけを上書きすることもできます。編集者は同じエディターで各バージョンを書き、対象のオーディエンスとしてプレビューできます。

    訪問者は、別の誰かになりすませません。

    所在地とセグメントは、呼び出し元から受け取ることはありません。リクエストを編集しても何も変わらず、デフォルトが返ります。

  8. ロールアウト

    キャンペーンを予約し、ひとまとめで出荷する。

    ロールアウトは、選んだ時刻にレコードのまとまりを一緒に公開します。一時停止、失敗した分のリトライ、全体のロールバックができます。

  9. キー

    各キーには、付与されたAPIだけが見える。

    キーが実行できないミューテーションは、そのキーに渡されるスキーマに存在しないので、漏えいしたキーが見つけられるものはありません。

  10. 組織

    作ったアプリを、SaaSにする。

    2社目の顧客が、1社目のために作ったものを求めています。組織として追加します。同じモデルと同じコードで、データ、メンバー、サインインはその顧客のものです。

    どの顧客も、ほかの顧客のデータを読めない。

    クエリが行に届く前に、認証情報が境界を決め、ルールはデータベースの行レベルセキュリティとして実行されます。チェックを忘れても、漏れることはありません。

  11. ペイウォール

    アプリにペイウォールを追加する。

    オペレーションに、ユーザーごとまたは組織ごとのクォータを設定します。上限に達した人は、WebではStripe、スマートフォンではアプリストアを通じて支払うことができ、そのサブスクリプションで上限が引き上げられます。代金は自分のアカウントにそのまま入ります。

  12. オペレーション

    ロジックは、自分が所有するコードで動く。

    必要なことを説明すると、Fóirがコントラクトの下書きを作り、コーディングエージェント向けのプロンプトを渡します。エージェントがそれを書き、自分のホスティングにデプロイします。Fóirがコードを保持することはありません。

    すべての呼び出しは、署名とスコープ付きで届く。

    Fóirは、誰が呼び出しているか、オペレーションが何に触れてよいかを判断し、それを呼び出しとともに送ります。型付きクライアントは、付与された範囲外のものをコンパイルエラーにします。各実行は記録され、リトライには同じ冪等キーが付くので、同じことが2度起きることはありません。

  13. シークレット

    シークレットはボールトの中に。

    コードが持つのは参照だけで、キーそのものではありません。Fóirは関数を呼び出すときに、その呼び出しが属するプロジェクトに対してだけ値を埋め込み、すべての読み取りをログに記録します。

    エージェントがキーを必要とするときは、人に頼みます。

    エージェントはWorkにタスクを登録して待ちます。誰かがスマートフォンからキーを追加すると、キーはそのままボールトに入り、エージェントは、使える参照を手に作業を再開します。値そのものは見ることがありません。

  14. フック

    何かが起きたら反応する。

    フックは、レコードが作成、変更、公開されたとき、または別のオペレーションが終了したときに、オペレーションを実行します。配信は少なくとも1回行われ、どの配信も再送できます。

  15. 通知

    何かが変わった瞬間に、顧客に知らせる。

    通知はプッシュとして送られ、アプリ自身の受信トレイにも入ります。顧客は受け取るカテゴリーを選び、Fóirはその選択を尊重します。

  16. メール

    データを読み込むメール。

    テンプレートは、送信の時点でレコードから内容が埋め込まれます。1つのレコードに関するメールとして、またはセグメント全体に、スケジュールで送信でき、同意が適用され、開封も追跡されます。

  17. メディア

    画像は一度アップロードするだけ。画面ごとに最適な1枚を。

    画像フィールドは、画面が求めるサイズでWebPとAVIFを返し、画像の読み込み中に表示するblurhashも付きます。

  18. 検索

    意味で検索する。呼び出し元が読み取れる範囲の中で。

    レコードは書き込まれる時点で埋め込みが作られます。質問すると最も近いものが見つかり、非公開のレコードがほかの人に表示されることはありません。

  19. 周辺

    近くにあるものを探す。

    ジオポイントフィールドにより、レコードを距離で検索できるので、アプリは、誰かのいる場所から2キロメートル以内に何があるかを問い合わせられます。

  20. 仕事

    公開中のサイトに残したノートが、タスクになります。

    許可した人なら誰でも、ページにノートを残せます。ノートはページの背後にあるレコードに紐づくので、適切な対象が付いた状態でWorkに届きます。

    何を出荷するかを、人とエージェントが1か所で決める。

    タスクをチームメイトに割り当てるか、Fóirに任せます。エージェントは下書きを自由に書きますが、人が公開を承認するまで何も公開されません。

  21. エージェント

    エージェントに常設の仕事を任せる。

    長時間稼働するエージェントが状況を見守り、MCPを通じてコンテンツを最新に保ちます。キーが変更できる範囲を限定するので、エージェントはその範囲内で自律的に動きます。

  22. コンソール内のあなたのアプリ

    アプリ独自の管理画面を、コンソールの中に。

    アプリは、ページと、動作に使う正確な権限を宣言します。コンソールはナビゲーションにそれを表示し、トークンを渡すので、パスワードもCookieも受け渡されません。

  23. インテグレーション

    すでに使っているシステムとつなぐ。

    連携アプリが、別のシステムのフィールドを自分のモデルに対応付け、レコードを同期し続けます。向こうでの変更は、こちらの同じレコードに反映されます。

  24. エクスポート

    データは持ち出せます。

    1つのコマンドで、すべてのレコードを自分が所有するPostgresデータベースにエクスポートします。

  25. スタート

    プロジェクトを作成し、モデルを定義するだけ。

    残りは最初から揃っています。