amethyst - アンドロイドのためのNostrクライアント

(Nostr client for Android)

Created at: 2023-01-12 02:28:30
Language: Kotlin
License: MIT

アメジスト:アンドロイドのためのNostrクライアント

アメジストはあなたのAndroid携帯電話に最高のソーシャルネットワークをもたらします。Nostr秘密鍵を挿入して投稿を開始するだけです。

現在の機能

  • [x] アカウント管理
  • [x]ホームフィード
  • [x]通知フィード
  • [x] グローバルフィード
  • [x]反応(ブースト、返信など)
  • [x]画像プレビュー(GIF、SVG)
  • [x] URLプレビュー
  • [x]スレッドの表示
  • [x] プライベート メッセージ (NIP-04)
  • [x]ユーザープロファイル(フォロー/フォロー解除)
  • [x] 公開チャット (NIP-28)
  • []通知バブル
  • []インフィニティスクロール
  • []書き込み時にユーザー/投稿をリンクするためのドロップダウン
  • [ ] 本人確認 (NIP-05)
  • [ ] イベントデリゲート (NIP-09)
  • [ ] 不明なユーザーからのメッセージをフィルタリングする
  • []プロファイル編集
  • []リレー編集
  • [ ] アカウント作成/バックアップのガイダンス
  • [ ] メッセージがフィードバックを送信

開発概要

全体的なアーキテクチャ

これは、KotlinとJetpack Composeで作られたネイティブAndroidアプリです。 このアプリは、nostrpostrlibの修正バージョンを使用して、Nostrリレーと通信します。 全体的なアーキテクチャは、通常の状態/ビューモデル/コンポジション、Nostrリレーに接続するサービスレイヤーを使用するUIで構成されています。 すべてのNostrオブジェクトを完全なオブジェクト指向グラフに保持するモデル/リポジトリレイヤー。

リポジトリレイヤーは、Nostrイベントをメモとユーザーとして別々に保存します。これらのクラスは、ライブデータオブジェクトを使用して UIとアプリの他の部分が個々のメモ/ユーザーをサブスクライブし、更新が発生したときに受信できるようにします。 また、必要に応じてビューモデルを更新する役割も担います。フィルターは画面の変化に反応します。ユーザーとして さまざまなイベントが表示され、データソースクラスはそれらの特定のイベントに関する詳細情報を受け取るために使用されます。

ほとんどのUIは、リポジトリクラスの変更に反応します。サービスレイヤーは、アプリのニーズごとにNostrフィルターを組み立てます。 リレーからデータを受信し、リポジトリに送信します。アプリの使用中にリレーとの接続が閉じられることはありません。 UI は、オブジェクトが更新されたという通知を受け取ります。ユーザーとメモのインスタンスは直接変更できます。 同じ ID を持つ 2 つの Notes や、同じパブリックキーを持つ 2 つの User インスタンスが存在することはありません。

最後に、ユーザーのアカウント情報(プライベートキー/パブキー)は、セキュリティのためにAndroidキーストアに保存されます。

セットアップ

次の前提条件がインストールされていることを確認します。

  1. ジャワ11
  2. アンドロイドスタジオ
  3. アンドロイド8.0 +携帯電話またはエミュレーションのセットアップ

このリポジトリをフォークしてクローンを作成し、Android Studio にインポートします。

git clone https://github.com/vitorpamplona/amethyst.git

Android Studio ビルドのいずれかを使用して、デバイスまたはシミュレーターにアプリをインストールして実行します。

建物

アプリをビルドします。

./gradlew assembleDebug

テスティング

./gradlew test
./gradlew connectedAndroidTest

デバイスへのインストール

./gradlew installDebug

デプロイ方法

  1. 新しい署名キーを生成する
keytool -genkey -v -keystore <my-release-key.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
openssl base64 < <my-release-key.keystore> | tr -d '\n' | tee some_signing_key.jks.base64.txt
  1. GitHubリポジトリに4つの秘密鍵変数を作成し、署名鍵情報を入力します
    • KEY_ALIAS
      <-
      <alias_name>
    • KEY_PASSWORD
      <-
      <your password>
    • KEY_STORE_PASSWORD
      <-
      <your key store password>
    • SIGNING_KEY
      < - からのデータ
      <my-release-key.keystore>
  2. とオンを変更します
    versionCode
    versionName
    app/build.gradle
  3. コミットしてプッシュします。
  4. コミットにタグを付ける
    v{x.x.x}
  5. リリース GitHub の作成アクションで新しいファイルをビルドします。
    aab
  6. 新しいリリースの説明に変更ログを追加します
  7. ファイルをダウンロードして、プレイストアにアップロードします。
    aab

貢献

問題プルリクエストは大歓迎です。

MITライセンス

著作権(c)2023ヴィトールパンプローナ

これにより、コピーを取得するすべての人に無料で許可が与えられます。 このソフトウェアおよび関連するドキュメントファイル(「ソフトウェア」)の、 権利を含むがこれに限定されない、制限のないソフトウェアで 使用、コピー、変更、マージ、公開、配布、サブライセンス、および/または販売 本ソフトウェアのコピー、および本ソフトウェアの相手を許可すること 以下の条件に従って、そうするために家具付き:

上記の著作権表示およびこの許可表示は、すべてに含まれるものとします。 本ソフトウェアのコピーまたは重要な部分。

本ソフトウェアは「現状有姿」で提供され、明示またはいかなる種類の保証もありません。 商品性の保証を含むがこれに限定されない黙示的、 特定の目的への適合性と非侵害。いかなる場合も、 著者または著作権者は、請求、損害、またはその他の 契約、不法行為、またはその他の行為のいずれであるかにかかわらず、以下から生じる責任 ソフトウェアまたは使用またはその他の取引から、またはそれに関連して、 ソフトウェア。