インスタンスの候補を一覧表示するようにする
現状
インスタンスのURLを入力しても、 何も候補が表示されず全て手入力 or コピー&ペーストをする必要があり ユーザビリティが低い。 場合によっては認証時点でユーザーが離脱してしまうことが考えられる。
改善方法
有効なインスタンスのURLを一覧で表示するようにする。 また有効なインスタンスのリストを統合的に管理できるようにしたい。
すること
- [ ] 有効なインスタンスを管理する仕組みを作る
- [ ] 有効なインスタンスを取得する実装をする
- [ ] 入力を受けたら候補を表示するようにする
- インスタンスの有効状態を管理する
- ユーザーが認証したらそのインスタンスのURLを受け取る仕組みを作る
- 有効なインスタンスを返すエンドポイントを作成する(公開)
インスタンス候補一覧機能
管理者が承認したインスタンスのデータをリストで返すエンドポイント。
インスタンス登録依頼機能
ユーザーがインスタンスを入力し認証に成功した時、 そのインスタンスの候補として登録するための前段階の機能。 管理者が承認をすることによって、候補に表示されるようになる。
インスタンス有効状態チェック機能
定期的に管理しているインスタンスにアクセスを行い、 そのインスタンスがアクティブであるかをチェックする機能。 一定期間以上インスタンスからの応答がない、あるいは410を返す場合は、そのインスタンスを無効化する。
認証イベント登録
どのインスタンスが最も使われているのを把握し、 よく使われているインスタンスを上位に表示したいので、 認証に成功した場合、認証イベントを登録するようにしたい。 ただし、インスタンスの候補を上位に上げるために、不正にリクエストを送信するスパム行為を行なわれる可能性があるので注意が必要。
インスタンスに存在する状態
- (登録)承認待ち
- 承認&公開済み
- 無効状態
- 削除状態 候補は承認&公開済みしか返さないようにする。
Next.jsでjsonを出力することができるらしいので、適当なCMSでインスタンスの候補を管理して Next.jsでjsonを出力してそれをCloudflareとかで管理する方法とかもできそう https://techblg.app/articles/response-json-by-getserversideprops-nextjs/
CMSは何を使うのがいいだろうか?・・・
ベンダーロックインが嫌ならそれこそGitHubとかで管理する?・・・
MisskeyやMastodonは連合しているインスタンスのURLのリストを取得するエンドポイントを提供しているので 起点となるインスタンスのリストを入力したらそこを頂点としながら順番に取得していくような仕組みを作りたい