linksplatform / linksplatform/InfiniteDepthTreeWebUIPrototype

Реализовать древовидный анонимный P2P чат на react, синхронизирующийся в режиме реального времени по WebRTC, хранящий данные в localStorage

オープン
#14 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
HTML
スター
0
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

説明

Этот чат должен использовать этот прототип визуализации дерева.
Командная строка будет превращена в строку вводу сообщений и будет размещения снизу.
Логотип предлагаю убрать полностью (для простоты), в будущем его можно будет обратно добавить в виде фонового изображения.

Механизм работы чата:
* Изначально, если все клиенты подключились к странице с чатом в первый раз, там всего лишь одно сообщение - "начало".
* Пользователь выбирает сообщение, оно помечается оранжевым цветом.
* Далее он начинает вводить сообщение (если при этом текстовое поле не в фокусе, оно автоматически фокусируется при нажатии любой из буквы/цифры без CTRL и ALT).
* После того как ввод сообщения окончен, пользователь нажимает Enter и сообщение тут же появляется в качестве вложенного в то сообщение, которое было выделено в самом конце находящихся там сообщений.
* Новое сообщение тут же выделяется после добавление и страница осуществляет перемещение к нему.
* При этом уведомление об изменениях отправляется всем клиентам подключенным по WebRTC.

Хранение данных:
* У сообщений в качестве идентификаторов используется время их создания, чтобы можно было определять их порядок относительно друг друга.
* Сообщения хранятся в виде пар значений _время создания сообщения родителя_ - _JSON объект, содержащий текст сообщения и массив временных меток сообщений-детей_.
* Изначально удаление и обновление сообщений не предусмотрено, только добавление.

Реализацию этого чата желательно делать после того как прототип веб-интерфейса будет превращён в соответствующие React-пакеты (https://github.com/linksplatform/InfiniteDepthTreeWebUIPrototype/issues/13).
Реализация должна размещаться в отдельном для этого репозитории, и возможно быть доступна в виде React пакета.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、参照されているプロトタイプの可視化と issue #13 を確認してください。この作業は React パッケージの変換に続いて行うことを意図しています。次に、説明されている tree chat、WebRTC 同期、localStorage の永続化、入力動作、メッセージ挿入フローを中心に、別の repository または React パッケージのスコープを定めてください。これらの要件が連携して動作すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript, react
領域
distributed-systems, frontend
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。